1

Lucene インデックスで、開始時間フィールドの値が自分の時間 (t) 以下で、終了時間フィールドの値が時間 (t) より大きいドキュメントを検索しています。ここでは、開始時間、終了時間、および私の時間はすべてhh:mm形式です。それらすべてをhh*60+mmに等しい整数値に変換しました。ここで、時間の値が開始時間に関連付けられた値と終了時間に関連付けられた値の間の範囲内にあるかどうかを確認したいと思います。

しかし、ここで私はいくつかの問題に遭遇しました。それらは次のとおりです。

1.整数値を持つフィールドをインデックスに追加できません。

2.整数を含む Lucene でこの範囲クエリを作成する方法がわかりません。

誰かがこれを解決するのを手伝ってくれたら、感謝します。

4

1 に答える 1

0

1:たとえば、 IntFieldを使用します。

document.add(new IntField("starttime", 1234, Field.Store.YES));

2: クエリ パーサーは数値範囲クエリをサポートするようstarttime:[1234 TO 1345]になりました。

Query rangeQuery = NumericRangeQuery.newIntRange("starttime", 1234, 1345, false, false);

または、より大きい場合は、値の 1 つに null を渡すことで範囲を開くことができます。

Query rangeQuery = NumericRangeQuery.newIntRange("starttime", 1234, null, false, false);
于 2013-06-06T21:02:18.317 に答える