0

我试图在 SpanNearQuery 中获取围绕匹配项的单词,但我无法弄清楚如何去做。我知道这里有一个称为记录GetSpans的函数:

  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,我想检索匹配中的单词。

4

1 回答 1

0

为了能够访问相邻的单词,您需要在索引时存储具有位置和偏移信息的 TermVector,然后您可以使用这些信息来检索周围的单词。

有关详细说明,请参阅http://searchhub.org/2009/05/26/accessing-words-around-a-positional-match-in-lucene/

于 2013-08-11T13:01:33.013 回答