我有一个全文查询,结尾为:
ORDER BY RELEVANCE DESC, CLICK_RATE DESC
我可以给 中的列赋予权重order by
吗?也许0.3
与相关性和0.7
到click_rate
?
就目前的情况来说,即使我把它们换过来,结果也不尽如人意。
作为替代方案,如何将排名靠前的3
结果按 . 排序,CLICK RATE
其余按relevance
.
我有一个全文查询,结尾为:
ORDER BY RELEVANCE DESC, CLICK_RATE DESC
我可以给 中的列赋予权重order by
吗?也许0.3
与相关性和0.7
到click_rate
?
就目前的情况来说,即使我把它们换过来,结果也不尽如人意。
作为替代方案,如何将排名靠前的3
结果按 . 排序,CLICK RATE
其余按relevance
.
这应该工作
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
您可以随时使用 WHERE。
试试这个: WHERE RELEVANCE > 0.3 AND RELEVANCE < 0.7 ORDER BY RELEVANCE DESC, CLICK_RATE DESC