0

我需要通过一个队列执行 2 个查询,并将第一个查询的结果传递给其他查询的 IF 表达式以及普通的 MySQL 查询。

例如,我尝试将 @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')

但我有解析错误。我该怎么做?

4

1 回答 1

0

不要以为你可以在 Sphinx 中做到这一点。

应用程序只需要运行第一个查询,捕获值,并将其显式写入第二个查询。

但似乎 jsut 表达式无论如何都会修改返回的内容(而不是说重新排序或过滤结果),因此与其让 sphinx 计算 IF 表达式,不如在应用程序中进行。

于 2017-02-06T17:39:18.327 回答