MySQL全文搜索不适用于特定单词

时间:2013-12-12 16:58:53

标签: php mysql sql full-text-search

我有一个奇怪的问题: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,所以我真的不知道出了什么问题。

2 个答案:

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