我有一个结束于以下内容的完整文本查询:
ORDER BY RELEVANCE DESC, CLICK_RATE DESC
我可以在 order by
中给列分配权重吗?也许将关联度分配 0.3
的权重,将点击率分配 0.7
的权重?
目前的情况是,即使我交换它们的顺序,结果也不尽如人意。
作为替代方案,如何让前 3
个结果按点击率
排序,其余按 关联度
排序。
我有一个结束于以下内容的完整文本查询:
ORDER BY RELEVANCE DESC, CLICK_RATE DESC
我可以在 order by
中给列分配权重吗?也许将关联度分配 0.3
的权重,将点击率分配 0.7
的权重?
目前的情况是,即使我交换它们的顺序,结果也不尽如人意。
作为替代方案,如何让前 3
个结果按点击率
排序,其余按 关联度
排序。
这应该可以运行
ORDER BY (.3 * 关联度) + (.7 * 点击率) DESC
来自评论的更新
使前三个结果按点击率排序,其余结果按相关性排序
您需要使用子查询首先识别前三个结果并进行排序
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