2016-02-23 156 views
0

在Lucene中,我試圖搜索價格範圍內的商品。 該項目的價格字段有一個美元符號附加到它,如「$ 3.99」在Lucene中搜索價格範圍

我試圖

String querystr = "product: xxxx AND price: $[20.00 - 40.00]" 

,但它給了我一個ParseException。那麼,正確的方法是什麼?

回答

2

例如,您應該將您的價格編入數值字段FloatField

如果您將此字段標記爲字符串或文本,您的範圍查詢必須基於詞典排序。因此,如果您執行的範圍查詢就像您在此嘗試的那樣,請說明範圍查詢price:[$20.00 TO $40.00](注意:see the docs,對於正確的範圍查詢語法),那麼您將根據需要獲取價格爲= $35.00的文檔,但您也將獲得文檔價格= $350.00,價格= $3500.00

使用數字字段重新編制索引後,可以使用NumericRangeQuery進行查詢(QueryParser不支持數字查詢,儘管有些人已將其擴展爲這樣做)。