我需要在我的文本中检索与 SpanNearQuery.getSpans() 返回的 Spans 匹配对应的单词。例如,如果我的文本是 [abcdef] 并且我使用 SpanNearQueries 和查询“b”和“e”(以及足够的 slop),那么我在文本中得到匹配的“bcd e”。现在,我怎样才能最有效地检索出现在匹配中的单词,即单词序列“bcd e”本身?
这是我需要的示例代码:
SpanNearQuery allNear = new SpanNearQuery(spansTermQueries, numWordsInBetween, true);
Spans allSpans = allNear.getSpans(reader);
现在我想遍历 allSpan 中的所有匹配项,并为每个匹配项检索查询 9 与该匹配项对应的文本之间的确切单词。
一种间接的方法是获取匹配的结束和开始位置,使用文件阅读器读取文本文档,并找到位置“结束”和“开始”之间的文本字符串。但这似乎不是一个非常有效的方法。看来这些信息应该已经存储在 Lucene Index 中了。
有人知道在匹配中检索查询之间的单词的更直接方法吗?
谢谢。