mysql - 为什么这 2 个 MySQL 查询返回不同的结果

标签 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 个结果?

最佳答案

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

In addition, words that are present in 50% or more of the rows are considered common and do not match.

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

看来您的样本数据超过了 50% 的匹配率。

关于mysql - 为什么这 2 个 MySQL 查询返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508972/

相关文章:

php - PDO 登录脚本返回 false

mysql - 如果表行与另一个表行字符串匹配,则获取该表行

php - Bigcommerce getProducts 限制

php - 我需要一个表格来将 MySQL 记录绑定(bind)在一起

mysql - 拒绝用户 '<userid>' @'<my-pc-ip-address>' 对于表 '<table-name>' 的 SELECT 命令

MySQL 5.1.65 |选择在哪里找不到我知道的东西

mysql - 选择随机行而不重复

MySQL - 强制新记录字段值大于先前记录字段值的约束

php - criteria->group 不适用于 yii

php - 在html表PHP中显示mysql数据