Как суммировать атрибут в поиске группы сфинксов? - PullRequest
2 голосов
/ 19 марта 2009

Мне нужен sphinx, чтобы отсортировать результаты по сумме атрибута. Мне нужно:

  • Сгруппируйте результаты по их идентификаторам (сделано)
  • Сортировка результатов по сумме одного атрибута

Я не могу найти способ суммировать этот атрибут. Как я мог это сделать?

(я использую sphinx PHP API)

Ответы [ 4 ]

3 голосов
/ 21 мая 2009

Sphinx поддерживает агрегатные функции (sum, avg, min, max) начиная с версии 0.9.9-rc2. Ознакомьтесь с документацией www.sphinxsearch.com / docs / current.html

1 голос
/ 20 марта 2009

Повторяя предыдущий ответ, это просто невозможно сделать в запросе Sphinx. Хотя синтаксис выражения допускает некоторый уровень вычислений в сортировке, он не имеет функций агрегирования. Если вы не сохраните это суммированное значение в качестве атрибута (который может быть опцией - рассчитайте его во время индексации), это будет отдельный запрос SQL для каждой записи.

0 голосов
/ 03 октября 2013

Ты имеешь ввиду граненый поиск? ^ _ ^ http://sphinxsearch.com/blog/2013/06/21/faceted-search-with-sphinx/

0 голосов
/ 19 марта 2009

Насколько я могу судить, это невозможно в текущей версии Sphinx. Функции группирования по функциям предназначены для возврата группы по атрибуту (то есть отдельного атрибута для группы элементов), счетчика в этой группе и «верхнего» элемента из группы.

Лучше всего подвести итог за пределами Сфинкса. Вы можете выполнить поиск в Sphinx по вашей группе по атрибуту, а затем зациклить эти элементы в PHP, суммируя по мере продвижения. Этот подход может быть не очень эффективным, поэтому его можно периодически кэшировать, чтобы уменьшить нагрузку на сервер.

...