В solr нет никаких агрегатных функций, как вы думаете о них из SQL.Самый простой способ сделать это - выполнить двухэтапный процесс:
- Получить максимальное значение с помощью соответствующего запроса с сортировкой
- использовать его с функцией max ()
Итак, что-то вроде:
q=*:*&sort=view_count desc&rows=1&fl=view_count
... чтобы получить элемент с максимальным view_count, который вы где-то записали, а затем
q=whatever&bq=div(view_count, max(the_max_view_count, 1))
Обратите внимание, что функция max () не выполняет агрегирование max;просто получая максимальное значение максимального количества просмотров, которое вы передаете, или 1 (чтобы избежать ошибок деления на ноль).
Если у вас есть поле с несколькими значениями (которое вы не можете отсортировать), вы можететакже используйте StatsComponent , чтобы получить макс.В любом случае, вы, вероятно, захотите сделать это один раз, а не для каждого запроса (скажем, каждую ночь в полночь или что-то еще, когда ваш набор данных успокоится).