0

Я индексации статей в Lucene индекса через различные поля, т.е. title, description, link, publishDateLucene MultiFieldQueryParser и Highlighter

я запроса индекса с использованием MultiFieldQueryParser как

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

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

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

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

+0

Разместите Highlighter код таким образом, мы можем видеть что вам не хватает. – user1071777

ответ

0

Я получил это работает, используя 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); 
Смежные вопросы