让我们假设我们有一组名称和价格的MP3播放器。如何编写solr查询以检索数字字段值小于指定的所有记录?
如何编写正确的solr查询以查找具有特定名称且价格低于100 $的所有商品?
q = "(name:(ipod) AND price ???? 100.0)"
让我们假设我们有一组名称和价格的MP3播放器。如何编写solr查询以检索数字字段值小于指定的所有记录?
如何编写正确的solr查询以查找具有特定名称且价格低于100 $的所有商品?
q = "(name:(ipod) AND price ???? 100.0)"
我不认为查询分析器支持<
运营商。您必须明确定义RangeQuery。然后,您可以使用BooleanQuery附加名称查询。
更新:显然,我错了。事实上,Solr的查询解析器比Lucene的更聪明。这里是你的答案:http://wiki.apache.org/solr/SolrQuerySyntax#Differences_From_Lucene_Query_Parser
场:[* TO 100]发现所有字段值小于或等于100
还指出,performancewise你应该使用此过滤器查询:
&q=name:ipod&fq=price:[* TO 100]
据我所知,我不相信Solr/Lucene支持大于/小于。它可以通过程序来完成,比如整数和日期(在你的情况下,货币值,因为只有两位小数担心)。
例如,本地,Lucene的和Solr查询分析器支持小于或等于(< =):
?q=name:ipod AND price:[* to 99.99]
这将使你,你要寻找的低于100美元,提供的数据不涉及分数的小数部分。
对于诸如日期和整数之类的东西或其他具有明显有限差异的事物,可以递减(或者在大于,递增的情况下)您要使用的值。
编辑:检查版本6.5 Solr的文档。它包含专属范围支持。参考指南的第272页说明。
本质上,使用大括号来表示小于。
?q=name:ipod AND price:{* TO 100}