Получение максимального значения поля в solr - PullRequest
7 голосов
/ 20 июня 2011

Я бы хотел увеличить свой запрос на количество просмотров элемента; Для этой цели я бы хотел использовать что-то вроде view_count / max_view_count, чтобы можно было измерить, как количество просмотров элемента соотносится с наибольшим числом просмотров в индексе. Я знаю, как повысить результаты с помощью запроса функции , но как мне легко получить максимальное количество просмотров? Если бы кто-нибудь мог привести пример, это было бы очень полезно ...

Ответы [ 2 ]

11 голосов
/ 21 июня 2011

В 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 , чтобы получить макс.В любом случае, вы, вероятно, захотите сделать это один раз, а не для каждого запроса (скажем, каждую ночь в полночь или что-то еще, когда ваш набор данных успокоится).

5 голосов
/ 30 октября 2014

Вы можете добавить только: & stats = true & stats.field = view_count Вы увидите небольшую статистику по указанному полю.Больше документации здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...