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 に答える