在Lucene,我试图搜索价格范围内的物品。 该商品的价格字段附加一个美元符号,如“$ 3.99”
我试过
String querystr = "product: xxxx AND price: $[20.00 - 40.00]"
但它给了我一个ParseException。那么这样做的正确方法是什么?
答案 0 :(得分:2)
您应该将价格编入一个数字字段FloatField,例如。
如果将此字段索引为字符串或文本,则范围查询必须基于字典顺序。因此,如果您执行范围查询(例如您在此处尝试),请说明范围查询price:[$20.00 TO $40.00]
(旁注:see the docs,对于正确的范围查询语法),那么您将获得价格=的文档根据需要$35.00
,但您还会获得价格为$350.00
且价格= $3500.00
的文档。
使用数字字段重新编制索引后,您可以使用NumericRangeQuery
进行查询(QueryParser
不支持数字查询,但有些人已将其扩展为执行此操作)。