我想在搜索之前过滤我的结果集。我知道正确的方法是使用filter query(fq)参数。但是,我想根据在字段上执行的函数的输出进行过滤。
我有一个字段'rating',它是1到~75000范围内的整数。上限可能会改变。我想过滤到评分最高的前500个项目。在SQL中,这将是:
... ORDER BY rating DESC LIMIT 500
我想我可以通过使用功能rord(评级)来获得按等级降序排名的solr中的文档,所以基本上我想这样做:
fq=rord(rating):[0 TO 500]
但这似乎不太可能。有谁知道我还能做什么?
答案 0 :(得分:3)
感谢Solr邮件列表上的Yonik Seeley:
Solr 1.4现在可以进行范围查询 任意功能: http://lucene.apache.org/solr/api/org/apache/solr/search/FunctionRangeQParserPlugin.html
请注意,ord()和rord()不起作用 正确地在Solr 1.4主干中。 Lucene有 改为在a中搜索每段 MultiReader,因此你会 目前获取ord()或rord() 该段,而不是整个索引。
答案 1 :(得分:1)
除非我遗漏了某些内容,否则您无法按评级字段排序,只需先取500即可。这与您的SQL示例相同。
答案 2 :(得分:1)