为什么这两个MySQL查询返回不同的结果

时间:2016-04-08 20:41:36

标签: mysql

我正在运行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结果?

1 个答案:

答案 0 :(得分:4)

从自然语言搜索的MySQL文档:

  

此外,50%或更多行中出现的单词是   被认为是常见且不匹配。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

您的样本数据似乎超过了50%的匹配率。