试图纠正MATCH ... AGAINST在最佳结果

时间:2017-09-19 18:58:41

标签: mysql match ranking

SELECT 
MATCH(`product_name`) AGAINST ('leica' IN BOOLEAN MODE) * 100 AS name,
MATCH(`product_category_name`) AGAINST ('leica' IN BOOLEAN MODE) * 50 AS category,
MATCH(`product_description`) AGAINST ('leica' IN BOOLEAN MODE) * 20 AS description 
FROM products  
WHERE MATCH (`product_name`, `product_category_name`, `product_description`) AGAINST ('leica' IN BOOLEAN MODE) 
ORDER BY (name)+(category)+(description) DESC LIMIT 0, 24

所以这种方法很有效,除了一个案例。当产品有“leica”时。在名称和描述中,它都被撞到了顶部。我希望描述仅在product_name或product_category中不匹配时才考虑。我正在考虑将* -5添加到某些内容中,但我无法弄清楚如何在没有某种IF子句的情况下获得准确的数字来纠正描述中出现的内容。

1 个答案:

答案 0 :(得分:2)

不要添加值,将它们用作单独的值来按顺序排序:

ORDER BY name DESC, category DESC, description DESC

然后你也不需要乘数。