2010-03-24 80 views
1

我正在使用Lucene,並試圖找到一種方法來索引和檢索具有範圍屬性的文檔。與lucene相交的邊界

比如我有:

Document 1: Price:[30 TO 50] 
Document 2: Price:[45 TO 60] 
Document 3: Price:[60 TO 70] 

而且我想搜索爲所有的區域相交的特定區間的文件,在上面的例子,如果我搜索Price in [55 TO 65]我應該得到Document 2Document 3作爲結果。

我不認爲NumericRangeQueries本身會做的伎倆,我需要在類似於R-trees的索引上工作,但它們是在Lucene中實現的嗎?另外,我想我需要的應該是MultiTermQuery的一個子類,因爲查詢Price in [55 TO 65]有兩個邊界,但在MultiTermQuery的子類中沒有看到任何適合的東西。

任何幫助表示讚賞,感謝 ,

西爾維奧

附:我使用的是Lucene 2.9.0,但如果需要,我可以更新到最新版本。

回答

1

一個簡單的選項就是在索引時間內簡單地將範圍擴展到範圍內的每個離散值。因此[30至50]將被索引爲30,31,32,33,34等,然後使用正常範圍查詢來查詢範圍。只要沒有大量的離散值(數百萬),這可能表現不錯。

+0

這樣我就會被綁定到我用來離散間隔的值的數量,也會產生很多字段(每個離散值一個),這會使我的文檔模式膨脹。當然,這是一個可能的解決方案,但我會保留它作爲最後的手段 –

+0

您不需要創建單獨的字段。所有值都將放在同一個字段中,不需要更改文檔模式。 – bajafresh4life

相關問題