【问题标题】:Why do these 2 MySQL queries return different results为什么这 2 个 MySQL 查询返回不同的结果
【发布时间】:2016-04-08 20:41:35
【问题描述】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 啊,谢谢 - 我想没有办法解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多