mysql - 反对不归还分数

标签 mysql sql full-text-search match-against

这个查询有问题吗?这个有时有效,有时无效。例如,对于“七”这个词,它不会返回任何分数,但我知道它至少出现在正文中的 29 行上,但它返回的分数为 0。

换句话说,它工作正常,但不适用于这个。任何人都知道为什么或有不同的解决方案来按相关性对其进行排序?

   SELECT *, 
         ( (MATCH(articles.name) AGAINST('seven'))*5 +
           (MATCH(articles.subtitle) AGAINST('seven'))*3 + 
           (MATCH(articles.body) AGAINST('seven'))) AS search_score 
     FROM articles 
LEFT JOIN matches ON articles.match=matches.id 
 ORDER BY search_score DESC

编辑:我注意到“七”是停用词。还有其他方法吗? stopwords

最佳答案

在每个分数周围添加 COALESCE(value,0)。

关于mysql - 反对不归还分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5915767/

相关文章:

php - 根据字符串相似度获取最长公共(public)子串

php - 带外键的 MySQL 查询

sqlite - 使用 Sqlite FTS 搜索日文字符(utf-8 编码)

mysql - 从mysql中的表中获取唯一结果

php - MySQL 和 fputcsv PHP 字段定界符不起作用

sql - 关键字段上存在 1 到 3 关系的表之间的差异

elasticsearch - 在Elasticsearch中搜索包含某些嵌套对象的文档

java - 在我的 Tapestry 网站上编写搜索代码?

mysql - 选择一个类别中的所有书籍,但属于其他类别的书籍除外

mysql - MySQL中的多个混合值行与子查询比较