代码之家  ›  专栏  ›  技术社区  ›  cubabit

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

  •  1
  • cubabit  · 技术社区  · 17 年前

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

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

    ... ORDER BY rating DESC LIMIT 500
    

    我想我可以通过使用函数rord(rating)按等级降序排列solr中的文档,所以基本上我想这样做:

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

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

    3 回复  |  直到 15 年前
        1
  •  3
  •   cubabit    17 年前

    感谢Solr邮件列表上的Yonik Seeley:

    SOLR 1.4现在可以在 任意函数: http://lucene.apache.org/solr/api/org/apache/solr/search/FunctionRangeQParserPlugin.html

    请注意,ORD()和RORD()不起作用 在SOLR 1.4行李箱中。卢塞恩 更改为搜索 多读者,因此你会 当前在中获取ORD()或RORD()。 那部分,而不是整个指数。

        2
  •  1
  •   Rob Young    17 年前

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

    推荐文章