2009-03-19 4 views
2

Мне нужен сфинкс, чтобы отсортировать результаты по сумме атрибута. Мне нужно:Как суммировать атрибут в поиске группы сфинксов?

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

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

(Im использованием сфинкс PHP API)

ответ

3

Sphinx поддерживает агрегированные функции (сумма, среднее, мин., Макс.) С версии 0.9.9-rc2. Проверьте документацию от www.sphinxsearch.com/docs/current.html

+0

Я пошел trouh всю документацию по сфинксу, и я не нашел ни одного примера о том, как использовать PHP api для выполнения СУММЫ. Ваша цитата исходит из раздела sphinxQL. – Ant

0

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

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

1

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

Смежные вопросы