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

标签 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

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

最佳答案

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

ORDER BY name DESC, category DESC, description DESC

那么您也不需要乘数。

关于mysql - 尝试更正 MATCH ... AGAINST 的最佳结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307953/

相关文章:

mysql - 今天完成帖子,但至少提前 20 分钟

php - SELECT sql 语句,从一个表中检索一行,并从另一个表中检索许多相关行

mysql - 如何在 MySQL 中返回数据透视表输出?

php - jquery 自动完成 : autocomplete does not stop if string does not match

PHP/MySQL - 基于最后一个数据库列的排名

asp.net - 在何处以及多久计算一次ASP.NET网站中帖子的排名

php - 我应该如何本地化 PHP/MySQL 网站的界面?

awk - gawk 中的正则表达式匹配多种方式

r - 根据匹配向量将数据帧的某些行移动到末尾

mysql - PHP MYSQL - 基于多行获取单个用户的排名(位置)