我正在运行MySQL查询来搜索数据库的作业。我使用MATCH和AGAINST来订购结果是相关的。 然而,我对这两个查询返回不同结果的原因感到困惑:
SELECT SQL_CALC_FOUND_ROWS *, MATCH (`title`)
AGAINST ("assistant")
AS Relevance
FROM jobs2
WHERE MATCH (`title`)
AGAINST ("assistant") AND date >= CURDATE() - INTERVAL 28 DAY GROUP BY jobref ORDER BY Relevance DESC LIMIT 0,50
据我所知,默认为自然语言模式,但返回0结果,而:
SELECT SQL_CALC_FOUND_ROWS *, MATCH (`title`)
AGAINST ("assistant" IN BOOLEAN MODE)
AS Relevance
FROM jobs2
WHERE MATCH (`title`)
AGAINST ("assistant" IN BOOLEAN MODE) AND date >= CURDATE() - INTERVAL 28 DAY GROUP BY jobref ORDER BY Relevance DESC LIMIT 0,50
按预期返回4个结果,但相关性始终为1,因此按相关性排序实际上是不可能的?
我的数据库有这些工作用于测试:
|date |title |jobref|
|2016-04-08 07:21:19|Assistant Management Accountant |12345 |
|2016-04-08 07:21:19|Assistant Accountant |12346 |
|2016-04-08 07:19:15|Assistant Finance Manager |12347 |
|2016-04-08 07:20:38|Accounts Assistant / Purchase Ledger Clerk / Accounts Payable |12348 |
基本上,为什么自然语言模式返回0结果?
答案 0 :(得分:4)
从自然语言搜索的MySQL文档:
此外,50%或更多行中出现的单词是 被认为是常见且不匹配。
http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html
您的样本数据似乎超过了50%的匹配率。