获得solr中字段的最大值

Ber*_*ant 7 lucene solr

我想通过项目的查看次数来提升我的查询; 我想使用类似于view_count / max_view_count此目的的东西,以便能够测量项目的视图计数与索引中最大视图计数的关系.我知道如何使用函数查询来提升结果,但是如何轻松获得最大视图数?如果有人能提供一个例子,那将是非常有帮助的......

Bil*_*ber 11

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

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

所以,像:

q=*:*&sort=view_count desc&rows=1&fl=view_count
Run Code Online (Sandbox Code Playgroud)

...获取具有最大view_count的项目,然后将其记录在某处

q=whatever&bq=div(view_count, max(the_max_view_count, 1))
Run Code Online (Sandbox Code Playgroud)

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

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


vuk*_*uky 5

您可以只添加:&stats = true&stats.field = view_count您将看到该指定字段的小统计信息.这里有更多文档