全文多字符串搜索

时间:2014-11-05 17:36:50

标签: mysql wildcard

对于给定的标签列(id:167),它等于“Hair Cut and Color”,

试图找出以下SQL语句输出0的原因:

SELECT MATCH(tags) AGAINST ('+hair* +cut*' IN BOOLEAN MODE) AS relevance FROM listings WHERE id = 167

以下给定的SQL返回1:

SELECT MATCH(tags) AGAINST ('+hair* +cut' IN BOOLEAN MODE) AS relevance FROM listings WHERE id = 167

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

MySQL全文搜索将忽略3个字符或更少的字词,除非您更改了最小长度变量。我认为这是问题的根源。通配符正在寻找切割为4个字符长或更长的单词的根,而不是找到任何。然而,当你在没有通配符的情况下切入搜索时,它被简单地忽略为太短。

要查找较短的单词,您可以在选项文件中更改innodb_ft_min_token_size变量(如果使用innodb)或ft_min_word_len变量(如果使用myisam)。

在此处查看更多内容:Fine Tuning MySQL Full Text Search