Lucene MultiFieldQueryParser и Highlighter

Я индексирую статьи в lucene index через разные поля, т.е. title, description, link, publishDate

Я запрашиваю индекс, используя MultiFieldQueryParser, как

+(title:[text]^5.0 description:[text]^4.0 link:[text]^3.0) +publishDate:[20150101 TO 20150531]

а затем я показываю статьи в качестве результатов поиска. Пока все хорошо. Теперь я хочу выделить поисковый текст в заголовке описания

Как мне идти об этом? Обычный Highlighter дает мне NullPointerException при генерации фрагментов. и PostingHighlighter дает мне Map с результатами, сгруппированными по полю.. но я не хочу этого так. Я был весь документ, который должен быть возвращен вместе с выделением текста поиска в заголовке и описании.

Любая помощь или предложение или фрагмент кода приветствуется.

1 ответ

Решение

Я получил это с помощью FieldType для всех полей, которые я хотел выделить:

FieldType ft = new FieldType();
ft.setIndexed(true);         
ft.setIndexOptionsFieldInfo.IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
ft.setStored(true);
ft.setStoreTermVectors(true);
ft.setStoreTermVectorOffsets(true);
ft.setTokenized(true);
ft.stored();

QueryScorer qs = new QueryScorer(q);
Highlighter h = new Highlighter(qs);
highlighter.setTextFragmenter(new SimpleFragmenter(300));           
String highlighted = h.getBestFragment(new StandardAnalyzer(),f,Text);
Другие вопросы по тегам