我注意到搜索某个特定单词并不适用于我们的用户搜索,我已将问题缩小到这个小例子。
如果你创建一个这样的测试表:
CREATE TABLE `names` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
insert into `names`(`id`,`name`) values (1,'Joseph');
insert into `names`(`id`,`name`) values (2,'Dick');
insert into `names`(`id`,`name`) values (3,'Rather');
insert into `names`(`id`,`name`) values (4,'Steven');
insert into `names`(`id`,`name`) values (5,'Anna');
执行此搜索:
SELECT * FROM `names` WHERE MATCH(NAME) AGAINST ('+rather* ' IN BOOLEAN MODE);
你会看到没有结果。 但是,将“相当”替换为表中的任何其他名称都可以正常工作...... '相反'???
有什么问题这是mysql版本5.5.8。
任何帮助都非常感谢......我真的不知道这一个!!
感谢。
答案 0 :(得分:2)
rather
是MySQL stopword。默认情况下,您无法对其进行全文搜索。
要解决此问题,您可以通过将ft_stopword_file系统变量设置为空字符串来禁用停用词。
答案 1 :(得分:1)
'相当'是在BOOLEAN模式下为MySql
进行全文搜索的禁用词有关详细信息,请参阅以下链接 http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html http://dev.mysql.com/doc/refman/5.5/en/fulltext-stopwords.html
答案 2 :(得分:0)
显然你没有创建全文索引检查一下: