我想通过项目的查看次数来提升我的查询;为了这个目的,我想使用类似view_count / max_view_count
的东西,以便能够衡量项目的视图计数与索引中最大视图数量的关系。我知道how to boost the results with a function query,但我怎样才能轻松获得最大观看次数?如果有人能提供一个例子,那将非常有帮助......
答案 0 :(得分:11)
在solr下没有任何聚合函数,就像你从SQL中考虑它们一样。最简单的方法是分两步:
所以,比如:
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