Lucene MultiFieldQueryParser和荧光笔

时间:2015-06-06 15:19:09

标签: lucene query-parser lucene-highlighter fast-vector-highlighter

我正在通过不同的字段索引lucene索引中的文章,例如titledescriptionlinkpublishDate

我使用 MultiFieldQueryParser 查询索引,如

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

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

我该如何解决这个问题? 正常的突出显示器在生成片段时给出了 NullPointerException 。 和 PostingHighlighter 给了我一个Map,结果根据字段组合在一起..但我不希望这样。我将整个文档与标题和说明中的搜索文本一起突出显示。

感谢任何帮助或建议或代码段。

1 个答案:

答案 0 :(得分: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);