我有结尾的全文查询:如何在mysql中权衡'ORDER BY'?
ORDER BY RELEVANCE DESC, CLICK_RATE DESC
我能给重量至的订单?也许0.3
与相关性和0.7
到click_rate
?
现在情况正在改变,即使我切换它们,结果也不令人满意。
作为一种替代方法,顶部3
结果按CLICK RATE
排序,其余按照相关性排序。
我有结尾的全文查询:如何在mysql中权衡'ORDER BY'?
ORDER BY RELEVANCE DESC, CLICK_RATE DESC
我能给重量至的订单?也许0.3
与相关性和0.7
到click_rate
?
现在情况正在改变,即使我切换它们,结果也不令人满意。
作为一种替代方法,顶部3
结果按CLICK RATE
排序,其余按照相关性排序。
这应该工作
ORDER BY (.3 * RELEVANCE) + (.7 * CLICK_RATE) DESC
从评论更新
排序click_rate使前3的结果,并通过相关的其他种类
你需要使用子查询首先确定第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相关性> 0.3和相关< 0.7 ORDER BY DESC相关性,CLICK_RATE DESC
您的答案不适用 - 请重新阅读该问题。 – belwood 2012-04-23 19:59:24
这更有意义,所以我删除我的答案。 +1 !!! – RolandoMySQLDBA 2012-04-23 19:48:35
相关性字段为0-1,click_rate字段为0.1以上...这仍然有效吗?我真的很感谢你的回答,ty – califmerchant 2012-04-23 20:01:48
@califmerchant我不知道为什么我认为转换是一个问题,但不是。这就是说,因为相关性字段比click_rate大一个数量级,您可能会发现它压倒了click_rate。你可能需要使用数字来找到你喜欢的值 – 2012-04-23 20:20:20