我真的很难理解这个MySQL问题

时间:2011-07-06 18:19:54

标签: mysql

我注意到搜索某个特定单词并不适用于我们的用户搜索,我已将问题缩小到这个小例子。

如果你创建一个这样的测试表:

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。

任何帮助都非常感谢......我真的不知道这一个!!

感谢。

3 个答案:

答案 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)

显然你没有创建全文索引检查一下:

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html