我正在使用这样的查询:
SELECT p.name, d.overview
FROM products AS p
LEFT JOIN descriptions AS d ON p.DescriptionID = d.ID
WHERE MATCH (p.name) AGAINST ('ram' IN BOOLEAN MODE) > 0
OR MATCH (d.overview) AGAINST ('ram' IN BOOLEAN MODE) > 0;
如何对此结果进行相关排序?
我已经尝试过
ORDER BY MATCH (p.name) AGAINST ('ram' IN BOOLEAN MODE)
OR MATCH (d.overview) AGAINST ('ram' IN BOOLEAN MODE) DESC
但这并没有帮助,因为结果没有根据相关性进行排序。
最佳答案
MATCH ... OR MATCH ...
^^
or
使其成为二进制表达式。二进制表达式的计算结果为 true 或 false。所以你要对它们是否匹配进行排序。因为 where
子句已经确保所有行匹配,所以这并不是不添加排序。
尝试按整数表达式排序,例如相关性之和:
ORDER BY
MATCH (p.name) AGAINST ('ram' IN BOOLEAN MODE) +
MATCH (d.overview) AGAINST ('ram' IN BOOLEAN MODE) DESC
关于mysql - 在多个表中排序匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746917/