結果を属性の合計でソートするには、スフィンクスが必要です。する必要がある:
- 結果を ID でグループ化する (完了)
- 1 つの属性の合計で結果を並べ替える
この属性を合計する方法が見つかりません。どうすればこれを行うことができますか?
(私はスフィンクスPHP APIを使用しています)
Sphinx は 0.9.9-rc2 バージョン以降、集計関数 (sum、avg、min、max) をサポートしています。www.sphinxsearch.com/docs/current.htmlのドキュメントを確認してください
前の答えを反映して、Sphinxクエリ内で実行することは不可能です。式の構文では、並べ替えである程度の計算が可能ですが、集計関数はありません。その合計値を属性として保存しない限り(これはオプションである可能性があります-インデックス作成中に計算します)、レコードごとに個別のSQLクエリである必要があります。
私が知る限り、これは現在の Sphinx バージョンでは不可能です。group by 関数は、group by 属性 (つまり、アイテムのグループに対する個別の属性)、そのグループ内のカウント、およびグループの「トップ」アイテムを返すように設計されています。
あなたの最善の策は、Sphinx の外で合計を行うことです。属性ごとにグループでソートするSphinx検索を実行し、PHPでそれらのアイテムをループして、合計することができます。このアプローチは非常に効率的ではない可能性があるため、サーバーの負荷を軽減するために定期的にキャッシュする必要がある場合があります。
ファセット検索のことですか?^_^ http://sphinxsearch.com/blog/2013/06/21/faceted-search-with-sphinx/