我需要检索文本中与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索引中了。
有人知道在比赛中检索查询之间的单词的更直接方法吗?
感谢。