1

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

我有一个“评级”字段,它是一个介于 1 到 ~75000 之间的整数。上限可能会改变。我想过滤到“评分”最高的前 500 个项目。在 SQL 中,这将类似于:

... ORDER BY rating DESC LIMIT 500

我想我可以通过使用函数 rord(rating) 降序来获得 solr 中的文档,所以基本上我想做:

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

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

4

3 回答 3

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 已更改为在 MultiReader 中搜索每个段,因此您当前将在该段中获得 ord() 或 rord(),而不是在整个索引中。

于 2009-04-21T08:00:36.043 回答
1

在 solr-user 邮件列表中交叉发布,由 Yonik 回答

于 2009-04-20T22:50:59.517 回答
1

除非我遗漏了什么,否则您不能按评级字段排序,然后简单地取前 500 个。这与您的 SQL 示例相同。

于 2009-04-20T21:17:49.130 回答