Результат запроса Lucene: получить слова в возвращенных документах, которые были найдены запросом

Чтобы представить выделенные слова-соответствия в документах, которые были возвращены запросами Lucene, результаты поиска Lucene могут содержать слова, которые использовались для возврата документа как соответствующего моему запросу.

Например :

  • Запрос Lucene: "собака-кошка"

  • Результат: ["собаки милые", "собака и кошки дружат"]

Как добиться этого с помощью Lucene? Вручную я не могу обрабатывать cats или dogs или любую разницу между запрошенными словами и возвращаемыми словами.


person Slim    schedule 13.12.2015    source источник


Ответы (1)


Используйте Highlighter Lucene. Что-то вроде этого:

//By default, this formatter will wrap highlights with <b>, but that is configurable.
Formatter formatter = new SimpleHTMLFormatter(); 
QueryScorer scorer = new QueryScorer(query);
Highlighter highlighter = new Highlighter(formatter, queryScorer);
//You can set a fragmenter as well, by default it will split into fragments 100 chars in size, using SimpleFragmenter.

String highlightedSnippet = highlighter.getBestFragment(myAnalyzer, fieldName, fieldContent);
person femtoRgon    schedule 16.12.2015