SpanNearQuery.getSpans() によって返されるスパンの一致に対応するテキスト内の単語を取得する必要があります。たとえば、テキストが [abcdef] で、クエリ 'b' と 'e' (および十分なスロップ) で SpanNearQueries を使用すると、テキストで一致する 'bcd e' が得られます。では、一致する単語、つまり一連の単語 'bcd e' 自体を最も効率的に取得するにはどうすればよいでしょうか。
ここに私が必要とするもののコード例があります:
SpanNearQuery allNear = new SpanNearQuery(spansTermQueries, numWordsInBetween, true);
Spans allSpans = allNear.getSpans(reader);
ここで、allSpans 内のすべての一致を反復処理し、一致ごとにクエリ間の正確な単語を取得し、その一致に対応するテキストを取得したいと考えています。
間接的な方法の 1 つは、その一致の終了位置と開始位置を取得し、ファイル リーダーを使用してテキスト ドキュメントを読み、位置 'end' と 'start' の間のテキストの文字列を見つけることです。しかし、それはあまり効率的な方法ではないようです。この情報は既に Lucene インデックスに格納されているはずです。
一致するクエリ間の単語を取得するより直接的な方法を知っている人はいますか?
ありがとう。