2012-01-07 32 views
3

我們目前使用的是lucene 2.3.2。我們使用前導零和索引來填充整數,以便我們也可以支持範圍查詢。我們正在努力升級到lucene 3.4並希望使用NumericRangeQueries。我們還希望支持數字字段的非範圍查詢。有什麼方法可以在lucene的數字字段中使用數字字段並支持列表類型的查詢。Lucene:數值字段上的非範圍查詢

request_id:(123, 124, 253) 

我知道,上面的查詢可以轉換爲

request_id:[123 TO 123] OR request_id:[124 TO 124] OR request_id:[253 TO 253] 

但查詢就會過長,當用戶給出了一個巨大的名單。有什麼方法可以讓這兩種方法都得到最佳效果嗎? (上範圍查詢的性能優勢從索引中的數字字段和支持列表查詢,而無需轉換這些以僞範圍查詢)

回答

0

看來,你必須使用org.apache.lucene.util.NumericUtils做到這一點,如:

new TermQuery(new Term("field", 
NumericUtils.intToPrefixCoded(myInt))); 

雖然,據我所知,它應該進行優化,以處理最小和最大相等的範圍查詢,所以您提供的示例查詢不應該比此處的示例產生更多開銷。