在solr中获取字段的最大值

时间:2011-06-20 15:51:30

标签: lucene solr

我想通过项目的查看次数来提升我的查询;为了这个目的,我想使用类似view_count / max_view_count的东西,以便能够衡量项目的视图计数与索引中最大视图数量的关系。我知道how to boost the results with a function query,但我怎样才能轻松获得最大观看次数?如果有人能提供一个例子,那将非常有帮助......

2 个答案:

答案 0 :(得分:11)

在solr下没有任何聚合函数,就像你从SQL中考虑它们一样。最简单的方法是分两步:

  • 通过排序
  • 的适当查询获取最大值
  • 将其与max()函数一起使用

所以,比如:

q=*:*&sort=view_count desc&rows=1&fl=view_count

...获取具有max view_count的项目,您可以在某处录制,然后

q=whatever&bq=div(view_count, max(the_max_view_count, 1))

请注意,max()函数没有执行聚合最大值;只需获取传入的最大视图计数的最大值或1(以避免被零除错误)。

如果你有一个multiValued字段(你无法排序),你也可以使用StatsComponent获得最大值。无论哪种方式,您可能希望这样做一次,而不是每次查询(例如,每晚午夜或一旦您的数据集稳定下来)。

答案 1 :(得分:5)

您可以添加: &安培;统计=真安培; stats.field = VIEW_COUNT 您将在该指定字段上看到一个小统计信息。更多文档here