【问题标题】:MySQL - Full text searchMySQL - 全文搜索
【发布时间】:2014-03-24 10:37:59
【问题描述】:

我正在使用带有两个字段(名称和别名)的全文索引的 MySQL 数据库。

这是一个电子游戏数据库

代码:

SELECT name,MATCH (name,aliases) AGAINST ('inFamous: Second Son') AS relevance
FROM games_search
ORDER BY relevance DESC;

通过此查询,我得到以下结果

代码:

inFamous 2                     9.150630950927734
inFamous: Second Son           9.150630950927734
inFamous                       8.947185516357422
inFamous: Festival of Blood    8.947185516357422

为什么前两个结果具有相同的相关性?

【问题讨论】:

    标签: mysql full-text-search


    【解决方案1】:

    MySQL 中的全文搜索会忽略两种类型的词:停用词和短于某个阈值的词。

    您可以阅读停用词列表here。对您的案例特别感兴趣的是 'second' 这个词。

    默认情况下,仅保留 4 个字符或更长的单词以供搜索。因此,'son' 被忽略。因此,您的查询相当于:

    SELECT name, MATCH (name,aliases) AGAINST ('inFamous:') AS relevance
    FROM games_search
    ORDER BY relevance DESC;
    

    我不确定为什么这些比最后两个要高。我推测相关性是将完美匹配(减去停用词和短词)视为略高于不完美匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-22
      • 2015-07-03
      • 1970-01-01
      • 2011-01-15
      • 2016-08-24
      • 2021-01-28
      • 2012-01-16
      相关资源
      最近更新 更多