2014-03-24 273 views
1

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

它是一个电子游戏数据库

codice:

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

与此查询我得到如下结果

codice:

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

为什么前两次效果有相同的意义?

回答

0

MySQL中的全文搜索忽略了两种类型的词:停用词和短语比某些词短。

您可以阅读停用词列表here。你的情况特别感兴趣的是'second'这个词。

默认情况下,只有包含4个字符或更长字符的单词才会用于搜索目的。因此,'son'被忽略。所以,您的查询相当于:

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

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