2015-04-16 4 views
0

У меня есть приложение на основе Java (lucene 4) и набор ключевых слов, поданных в приложение в качестве поискового запроса (термины могут содержать более одного слова, например, это может быть: «память», «Старый дом», «закон Европейского союза» и т. Д.).Lucene получить список совпадающих ключевых слов

Мне нужен способ получить список совпадающих ключевых слов из индексированного документа и, возможно, также получить позиции ключевого слова в документе (также для ключевых слов с несколькими словами). Я пробовал с пакетом выделения lucene, но мне нужно получить только ключевые слова без какой-либо части текста. Он также возвращает многословные ключевые слова в отдельных фрагментах.

Я был бы очень признателен за любую помощь.

ответ

0

Там Похожая (возможно, тот же) вопрос здесь: Get matched terms from Lucene query

Вы видели это?

Решение состоит в том, чтобы разобрать сложный запрос в более простой запрос, пока вы не получите TermQuery, а затем проверьте через searcher.explain (query, docId) (потому что, если он совпадает, вы знаете, что это термин) ,

Я думаю, что это не очень эффективно, но он работал для меня, пока я не столкнулся с SpanQueries. вам может быть достаточно.

+0

Да, я уже видел это. Спасибо. Однако у меня очень длинный запрос, состоящий из более чем 3M ключевых слов. Это не очень эффективно. Мне было интересно, существует ли низкоуровневая «служба», которая сохраняет список сопоставленных ключевых слов после каждого поиска. –

+0

Я пробовал до сих пор использовать маркер и получить согласованный фрагмент вокруг ключевого слова. Но, к сожалению, это похоже на то, что каждое слово ключевого слова многословного слова является отдельным совпадением, например, при поиске в «европейских странах» оно возвращается: «... в Европейский страны население ...». Мне нужно добиться того, чтобы оба слова были в одном и том же теге. Поэтому я могу сделать вывод, что они принадлежат к одному и тому же ключевому слову. –

Смежные вопросы