在Solr中使用过滤器查询中的函数

时间:2009-04-20 16:16:04

标签: search solr filtering

我想在搜索之前过滤我的结果集。我知道正确的方法是使用filter query(fq)参数。但是,我想根据在字段上执行的函数的输出进行过滤。

我有一个字段'rating',它是1到~75000范围内的整数。上限可能会改变。我想过滤到评分最高的前500个项目。在SQL中,这将是:

... ORDER BY rating DESC LIMIT 500

我想我可以通过使用功能rord(评级)来获得按等级降序排名的solr中的文档,所以基本上我想这样做:

fq=rord(rating):[0 TO 500]

但这似乎不太可能。有谁知道我还能做什么?

3 个答案:

答案 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)