在Lucene搜索价格范围

时间:2016-02-23 16:35:57

标签: lucene

在Lucene,我试图搜索价格范围内的物品。 该商品的价格字段附加一个美元符号,如“$ 3.99”

我试过

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

但它给了我一个ParseException。那么这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该将价格编入一个数字字段FloatField,例如。

如果将此字段索引为字符串或文本,则范围查询必须基于字典顺序。因此,如果您执行范围查询(例如您在此处尝试),请说明范围查询price:[$20.00 TO $40.00](旁注:see the docs,对于正确的范围查询语法),那么您将获得价格=的文档根据需要$35.00,但您还会获得价格为$350.00且价格= $3500.00的文档。

使用数字字段重新编制索引后,您可以使用NumericRangeQuery进行查询(QueryParser不支持数字查询,但有些人已将其扩展为执行此操作)。