7

我有一个全文查询,结尾为:

 ORDER BY RELEVANCE DESC, CLICK_RATE DESC

我可以给 中的列赋予权重order by吗?也许0.3与相关性和0.7click_rate

就目前的情况来说,即使我把它们换过来,结果也不尽如人意。

作为替代方案,如何将排名靠前的3结果按 . 排序,CLICK RATE其余按relevance.

4

2 回答 2

10

这应该工作

ORDER BY (.3 * RELEVANCE) + (.7 * CLICK_RATE) DESC

演示

从评论更新

使前 3 个结果按 click_rate 排序,其余按相关性排序

您需要首先使用子查询识别前 3 个并进行排序

SELECT test.id, 
       test.relevance, 
       test.click_rate, 
       top_3_click_rate.id         t3_id, 
       top_3_click_rate.click_rate t3_click_rate 
FROM   test 
       LEFT JOIN (SELECT id, 
                         click_rate 
                  FROM   test 
                  ORDER  BY click_rate DESC 
                  LIMIT  3) top_3_click_rate 
         ON test.id = top_3_click_rate.id 
ORDER  BY top_3_click_rate.click_rate DESC, 
          test.relevance DESC 

演示

于 2012-04-23T19:36:06.627 回答
-3

您可以随时使用 WHERE。

试试这个: WHERE RELEVANCE > 0.3 AND RELEVANCE < 0.7 ORDER BY RELEVANCE DESC, CLICK_RATE DESC

于 2012-04-23T19:48:17.497 回答