尝试更正 MATCH ... AGAINST 的最佳结果

Trying to correct for MATCH ... AGAINST on top results

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 子句的情况下获得准确的数字来更正描述中出现的内容。

不要添加值,将它们用作单独的值以按以下方式排序:

ORDER BY name DESC, category DESC, description DESC

那你也不需要乘法器了。