私は ebsite のパフォーマンスを向上させるためにスフィンクス検索エンジンに移行しているので、古い mysql クエリを新しいスフィンクス言語に翻訳しようとしています。
ポイントは、私の投稿への投票と、各投票に対して与えられたポイント (1 から 5 まで) の間の数学演算に基づいて結果をソートすることです。
たとえば、投稿に対して 3 票を獲得し、投票 1=5 ポイント、投票 2=3 ポイント、投票 3=2 ポイントを獲得した場合、私のテーブルには、整数 = 3 (投票 = 3) の投票という名前のフィールドと、フィールドが含まれます。整数は 5+3+2 (ポイント = 10) です。
このため、そのような投稿の最終的な評価はポイント/投票になります。この例では、10/3=3,333 になります...
私がSphinx APIを使用して降順で最高評価の投稿のリストを取得していると仮定すると、これは私がPHPスクリプトに持っていた古いmysqlクエリです:
mysql_query("SELECT * FROM table ORDER BY points/votes DESC LIMIT $start,$stop");
スフィンクス クエリを作成しようとしましたが、機能せず、常に 0 の結果が返されます。私が行ったすべての試行を説明する // コメント行をよく読んでください。
require("sphinxapi.php");
$cl = new SphinxClient;
$index = index;
$cl->setServer("localhost", 9312);
$cl->SetMatchMode(SPH_MATCH_FULLSCAN);
//$cl->SetSortMode(SPH_SORT_EXTENDED, 'IDIV(points,votes) DESC'); //not working
//$cl->SetSortMode(SPH_SORT_EXTENDED, '(points DIV votes) DESC'); //not working
//$cl->SetSortMode(SPH_SORT_EXTENDED, 'points/votes DESC'); //not working
//$cl->SetSortMode(SPH_SORT_EXTENDED, '(points/votes) DESC'); //not working
$cl->setLimits($start,$stop,$max_matches=1000);
$query = "";
何が間違っているかを見つけるのを手伝ってくれませんか...ありがとう。