【发布时间】:2011-05-06 18:50:45
【问题描述】:
这个查询有问题吗?这个有时有效,有时无效。例如,“七”这个词不返回任何分数,但我知道它至少出现在正文中的 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
【问题讨论】:
-
您是否分别检查过? SQL 并没有很好地添加 NULL...
标签: mysql sql full-text-search match-against