获取搜索字段中突出显示的片段的开始和结束索引

时间:2010-05-13 06:29:40

标签: .net lucene lucene.net lucene-highlighter

“我的搜索返回一个字段中突出显示的片段。我想知道在特定搜索文档的该字段中,该片段的开始和结束位置在哪里?”

例如

考虑我在上面的行中搜索“突出显示的片段”(将上述段视为单个文档)。

我将我的分裂者设置为:

SimpleFragmenter fragmenter = 
            new SimpleFragmenter(30);

现在 GetBestFragment 的输出有点像:“中返回突出显示的片段”

是否有可能在上面的文本中获取此片段的起始和结束索引 (例如,开头是10,结尾是45)

2 个答案:

答案 0 :(得分:1)

使用方法getBestFragment时,Highlighter不会返回该信息。在幕后,荧光笔使用TokenGroup类 获取每个片段的开始和结束索引。你可以使用那个类。

答案 1 :(得分:0)

几个月前我做到了这一点。您必须构建自定义FormatterEncoder。 基本上,在高亮显示器内部,格式化器处理选择用于突出显示的令牌,而编码器处理其余的令牌。在您的情况下,您需要编码器在每次调用时发出空,并且格式化程序发出起始索引和结束索引。它们确实存储在突出显示部分的TokenGroup中。您的荧光笔应使用这些自定义格式化程序和编码器构建。