1

我正在通过不同的字段索引 lucene 索引中的文章,即title, description, link,publishDate

我使用MultiFieldQueryParser查询索引,例如

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

然后我将文章显示为搜索结果。到目前为止一切都很好。现在我想突出显示标题中的搜索文本,描述

我该怎么办?正常的荧光笔在生成片段时会给我NullPointerException 。PostingHighlighter了我一个Map根据字段组合在一起的结果..但我不希望这样。I 是要返回的整个文档,同时突出显示标题和描述中的搜索文本。

任何帮助或建议或代码片段表示赞赏..

4

1 回答 1

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);
于 2015-06-16T12:37:50.997 回答