2014-08-28 132 views
0

如果我搜索单词hello然后我没有匹配,而我搜索单词hella然后我得到了比赛。单词Non发生同样的事情。我在Mac和sqlfiddle.com上的MAMP上进行了测试,结果相同。你知道为什么吗? 下面是测试:http://sqlfiddle.com/#!2/40658/1FULLTEXT mysql搜索不工作

CREATE TABLE IF NOT EXISTS `product` (
    `id` mediumint(8) unsigned NOT NULL auto_increment, 
    `name` TEXT default NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=1; 

INSERT INTO `product` (`name`) VALUES ("hello SANYO MC-1234"); 
INSERT INTO `product` (`name`) VALUES ("hella SANYO MC-1234"); 
INSERT INTO `product` (`name`) VALUES ("Non SONY"); 
INSERT INTO `product` (`name`) VALUES ("mac SONY"); 

拿到1场:

SELECT *, MATCH (`name`) AGAINST ('+hella*' IN BOOLEAN MODE) as `score` FROM `product` WHERE MATCH (`name`) AGAINST ('+hella*' IN BOOLEAN MODE) ORDER BY `score` DESC 

得到0的比赛:

SELECT *, MATCH (`name`) AGAINST ('+hello*' IN BOOLEAN MODE) as `score` FROM `product` WHERE MATCH (`name`) AGAINST ('+hello*' IN BOOLEAN MODE) ORDER BY `score` DESC 

回答

1

如果你要使用全文搜索,你需要学习关于停用词和最小字长。

要开始的地方是documentation

简短的回答是,“你好”是一个默认停用词(如记录here)。而且,短于4个字符的单词被忽略(如“非”)。默认的最小字长度记录为4 here

+0

我明白了。谢谢! – user3985030 2014-08-28 02:36:23