2017-02-06 8 views
0

1つのキューで2つのクエリを実行し、最初のクエリの結果を通常のMySQLクエリと同様に他のクエリのIF式に渡す必要があります。一例として、Sphinxクエリでのカスタム変数の使用

、私は2番目のクエリに@average変数を渡してみてください。

SET @average=(SELECT AVG(weight()) avg_rank FROM common WHERE match('query text') OPTION ranker=expr('sum(word_count)*100 + sum(lcs*user_weight)*100 + bm25 + sum(exact_order)*200'); 

SELECT *, weight() as rank, 2000 * exp(- 9.594E-5 * abs(1486121357 - _rank_date)/1000) AS date_rank, IF(_importance > @average,_importance,0) AS importance_rank, (rank + date_rank + importance_rank) as total_rank FROM common WHERE match('query text') OPTION ranker=expr('sum(word_count)*100 + sum(lcs*user_weight)*100 + bm25 + sum(exact_order)*200') 

しかし、私はパースエラーが発生しました。私はそれをどうやってできるの?

答えて

0

あなたはスフィンクスでそうすることはできないと思います。

アプリケーションは、最初のクエリを実行し、値を取得し、2番目のクエリに明示的に書き込むだけで済みます。

しかし、式jsutは、結果を並べ替えたりフィルタリングしたりするのではなく、返されるものを変更するように見えるので、IF式を計算するためにsphinxを取得するのではなく、アプリケーションで行います。

関連する問題