我试图在SpanNearQuery中获取围绕匹配的单词,但我无法弄清楚如何。我知道有一个名为GetSpans
的函数here:
129 public override Spans GetSpans(IndexReader reader)
130 {
131 if (clauses.Count == 0)
132 // optimize 0-clause case
133 return new SpanOrQuery(GetClauses()).GetSpans(reader);
134
135 if (clauses.Count == 1)
136 // optimize 1-clause case
137 return clauses[0].GetSpans(reader);
138
139 return inOrder?(Spans) new NearSpansOrdered(this, reader, collectPayloads):(Spans) new NearSpansUnordered(this, reader);
140 }
这是我应该使用的功能(因为它确实返回一个跨度的列表/数组但只有一个跨度)还是有其他功能?
例如,如果我的文字为:lucene is very powerful
且我的搜索字词为lucene powerful
,我想检索匹配中的字词。
答案 0 :(得分:0)
为了能够访问相邻的单词,您需要在索引时存储具有位置和偏移信息的TermVectors,然后您可以使用它来检索周围的单词。
有关详细说明,请参阅http://searchhub.org/2009/05/26/accessing-words-around-a-positional-match-in-lucene/。