Lucene MultiFieldQueryParser 和荧光笔
Lucene MultiFieldQueryParser and Highlighter
我在 lucene 索引中通过不同的字段索引文章,即 title
、description
、link
、publishDate
我使用 MultiFieldQueryParser 查询索引 like
+(title:[text]^5.0 description:[text]^4.0 link:[text]^3.0) +publishDate:[20150101 TO 20150531]
然后我将文章显示为搜索结果。
到目前为止一切都很好。
现在我想在标题,描述中突出显示搜索文本
我该怎么办?
正常的 Highlighter 在生成片段时给我 NullPointerException 。
PostingHighlighter 给了我一个 Map
,结果根据字段分组在一起。但我不希望那样。我是要返回的整个文档以及标题和描述中搜索文本的突出显示。
如有任何帮助或建议或代码片段,我们将不胜感激。
我通过对我想要突出显示的所有字段使用 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);
我在 lucene 索引中通过不同的字段索引文章,即 title
、description
、link
、publishDate
我使用 MultiFieldQueryParser 查询索引 like
+(title:[text]^5.0 description:[text]^4.0 link:[text]^3.0) +publishDate:[20150101 TO 20150531]
然后我将文章显示为搜索结果。 到目前为止一切都很好。 现在我想在标题,描述中突出显示搜索文本
我该怎么办?
正常的 Highlighter 在生成片段时给我 NullPointerException 。
PostingHighlighter 给了我一个 Map
,结果根据字段分组在一起。但我不希望那样。我是要返回的整个文档以及标题和描述中搜索文本的突出显示。
如有任何帮助或建议或代码片段,我们将不胜感激。
我通过对我想要突出显示的所有字段使用 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);