获取SpanNear查询的跨度?

时间:2013-08-09 21:07:20

标签: c# lucene lucene.net

我试图在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,我想检索匹配中的字词。

1 个答案:

答案 0 :(得分:0)

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

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