2014-11-05 98 views
0

对于给定的标签栏(ID:167)等于“剪发和颜色”,全文多个字符串搜索

试图找出为什么下面的SQL语句输出0:

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

而低于1返回给定SQL:

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

感谢提前的帮助。

回答

3

除非您更改了最小长度变量,否则MySQL全文搜索将忽略3个字符或更少的单词。我认为这是问题的根源。通配符正在寻找剪切作为长度为4个字符或更长的单词的根目录,但未找到任何内容。而当你在没有通配符的情况下搜索时,它会被忽略得太短。

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

查看更多在这里:Fine Tuning MySQL Full Text Search

+0

即使使用的例子的话,不是**停止词的**,也有利于注意,MySQL着眼于这些以及和忽略它们:HTTP://开发.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html – 2014-11-05 18:17:04

+0

感谢您的明确解释! – why 2014-11-05 20:10:33

+0

没问题!很高兴我能帮上忙。 – marzipanlabs 2014-11-05 21:04:19