如何在多个领域使用Lucene FastVectorHighlighter?

时间:2014-07-29 13:46:56

标签: lucene lucene-highlighter

我已经进行了基本搜索工作,并且我使用FastVectorHighlighter突出显示。当你向荧光笔询问一个最好的片段"您有getBestFragment(s)的一些重载可供选择,documented here。我现在使用最简单的一个,如下:

highlightedText = highlighter.getBestFragment(fieldQuery, searcher.getIndexReader(), 
     scoreDoc.doc, "description", 100)

所以我突然强调来自&#34;描述&#34;领域。然而,我的查询搜索另一个字段,&#34; notes&#34;。如何在突出显示中包含该内容?有一个重载需要Set<String> matchedFields和一个String storedField,但我不了解文档。该方法的文档说:

  

建议所有matchedField与storedField共享相同的源,或者至少是它的前缀。

这是什么意思?如何索引&#34;笔记&#34;和&#34;描述&#34;字符串,以及我为matchedFieldsstoredField传递了什么?

1 个答案:

答案 0 :(得分:0)

我认为,该调用旨在突出显示相同内容的多个索引形式。也就是说,如果您有一个存储的全文内容字段,但您已经通过多种不同方式对其进行索引,以扩展搜索方式。也许你有一个使用标准分析的索引字段,另一个使用语言特定的词干,另一个使用ngrams,另一个使用索引元电话。

如果要突出显示两个不同的存储字段,则会调用两次getBestFragment调用。或者您可以使用不同的荧光笔,允许同时突出显示多个存储的字段,例如PostingsHighlighter