我有一个奇怪的问题:MySQL(PHP / 5.2.17上的MySQL-5.1.61)全文搜索不适用于单词“asus”。我有产品表:
CREATE TABLE IF NOT EXISTS product (
pid int unsigned NOT NULL AUTO_INCREMENT,
vendor text NOT NULL,
series text NOT NULL,
PRIMARY KEY (pid),
FULLTEXT KEY search (vendor,series)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
还有一些价值观:
INSERT INTO product (vendor,series) VALUES ('Apple','iPad');
INSERT INTO product (vendor,series) VALUES ('Asus','Eee Slate');
INSERT INTO product (vendor,series) VALUES ('Asus','Nexus 7');
INSERT INTO product (vendor,series) VALUES ('Sony','Xperia Tablet Z');
当我查询
时SELECT * FROM product WHERE MATCH (vendor,series) AGAINST ('Sony');
它工作正常,但当字段是'华硕'或'华硕'时,它不起作用。我已经设置了ft_stopword_file =“”并重新创建了DB - 没有改变。最小长度为4,所以我真的不知道出了什么问题。
答案 0 :(得分:2)
搜索结果为空,因为“Asus”一词出现在至少50%的行中。因此,它被有效地视为一个禁用词。
(摘自http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html)
答案 1 :(得分:0)
由于您的桌面引擎MyISAM的限制,您的搜索结果为空。
在mysql文档中,当一个单词出现在至少50%的行中时。它被视为一个禁用词并且不返回任何结果。要获得小表的结果,请使用InnoDB引擎。
链接:https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html