我已经进行了基本搜索工作,并且我使用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;字符串,以及我为matchedFields
和storedField
传递了什么?
答案 0 :(得分:0)
我认为,该调用旨在突出显示相同内容的多个索引形式。也就是说,如果您有一个存储的全文内容字段,但您已经通过多种不同方式对其进行索引,以扩展搜索方式。也许你有一个使用标准分析的索引字段,另一个使用语言特定的词干,另一个使用ngrams,另一个使用索引元电话。
如果要突出显示两个不同的存储字段,则会调用两次getBestFragment
调用。或者您可以使用不同的荧光笔,允许同时突出显示多个存储的字段,例如PostingsHighlighter
。