从Lucene的SpanNearQuery中获取与匹配相对应的单词

时间:2011-02-03 12:54:08

标签: lucene html text-analysis

我需要检索文本中与SpanNearQuery.getSpans()返回的Spans匹配相对应的单词。例如,如果我的文本是[a b c d e f]并且我使用带有查询'b'和'e'(以及足够的slop)的SpanNearQueries,那么我在我的文本中得到一个匹配'b c d e'。现在,我怎样才能最有效地检索匹配中出现的单词,即单词'b c d e'本身的序列?

以下是我需要的示例代码:

SpanNearQuery allNear = new SpanNearQuery(spansTermQueries, numWordsInBetween, true);
Spans allSpans = allNear.getSpans(reader);

现在我想迭代allSpans中的所有匹配,并且对于每个匹配,检索查询之间的确切单词9对应于该匹配的文本。

一种间接方式是获取该匹配的结束和开始位置,使用文件读取器读取文本文档,并在位置“结束”和“开始”之间找到文本字符串。但这似乎不是一种非常有效的方式。似乎这些信息应该已经存储在Lucene索引中了。

有人知道在比赛中检索查询之间的单词的更直接方法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您要做的是highlighting。如果存储术语向量,您可以使用普通荧光笔或fast vector highlighter