0

我有一个基本的搜索工作,我正在使用FastVectorHighlighter. 当您向荧光笔询问“最佳片段”时,您有一些getBestFragment(s)可供选择的重载,记录在这里。我现在用的是最简单的,像这样:

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

所以我在“描述”字段中突出显示匹配项。然而,我的查询搜索另一个字段“注释”。我如何将其包含在突出显示中?有一个需要 aSet<String> matchedFields和 one的重载String storedField,但我不理解文档。该方法的文档说:

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

这意味着什么?如何索引“notes”和“description”字符串,以及我传递什么matchedFieldsstoredField

4

1 回答 1

0

我相信,这个电话是为了强调同一内容的多个索引形式。也就是说,如果您有一个存储的全文内容字段,但您已经以多种不同的方式对其进行索引以扩展您可以搜索它的方式。也许您有一个使用标准分析的索引字段,另一个使用特定语言的词干提取,另一个使用 ngram,以及另一个索引变音位。

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

于 2014-07-29T17:17:09.647 回答