2009-03-19 10 views
2

Ich brauche Sphinx, um die Ergebnisse nach der Summe eines Attributs zu sortieren. Ich muss:Wie summiere ich ein Attribut in einer Sphinx-Gruppensuche?

  • Gruppe die Ergebnisse durch ihre IDs (fertig)
  • Sortierung der Ergebnisse durch die Summe eines Attributs

ich keine Möglichkeit, dieses Attribut zu summieren finden. Wie könnte ich das tun?

(Im mit sphinx PHP API)

Antwort

3

Sphinx unterstützt Aggregatfunktionen (Summe, Durchschnitt, Min, Max) seit Version 0.9.9-rc2. Überprüfen Sie die Dokumentation von www.sphinxsearch.com/docs/current.html

+0

Ich ging trouh alle Sphinx-Dokumentation, und ich habe gründet nicht ein einziges Beispiel dafür, wie PHP-API zu verwenden, um eine Summe zu tun. Ihr Zitat kommt aus dem sphinxQL Abschnitt – Ant

0

Soweit ich das beurteilen kann, ist dies nicht möglich, in der aktuellen Version Sphinx. Die Funktion "Gruppieren nach Funktionen" dient dazu, die Gruppe nach Attribut (dh das eindeutige Attribut der Gruppe von Elementen), die Anzahl innerhalb dieser Gruppe und das Element "nach oben" aus der Gruppe zurückzugeben.

Ihre beste Wette ist, Ihre Summing außerhalb von Sphinx zu tun. Sie können eine Sphinx-Suche nach Ihrer Gruppe nach Attribut sortieren und dann diese Elemente in PHP durchlaufen und dabei summieren. Dieser Ansatz ist möglicherweise nicht besonders effizient, daher sollte er in regelmäßigen Abständen zwischengespeichert werden, um die Serverlast zu reduzieren.

1

Echo der vorherigen Antwort, es ist nur nicht möglich, innerhalb einer Sphinx-Abfrage zu tun. Während the expression syntax ein gewisses Maß an Berechnungen beim Sortieren zulässt, hat es keine Aggregationsfunktionen. Wenn Sie diesen summierten Wert nicht als Attribut speichern (das könnte eine Option sein - während der Indizierung berechnen), muss es sich um eine separate SQL-Abfrage pro Datensatz handeln.

Verwandte Themen