MATCH ... AGAINST没有找到行

时间:2012-06-07 09:44:14

标签: mysql

我正在尝试使用MATCH ... AGAINST进行搜索,但它没有给我任何结果。我已将ft_min_word_len设为2,将ft_stopword_file设为""

这是我的表:

CREATE TABLE `rw_jam_search` (
  `jam` int(10) unsigned NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`jam`),
  KEY `name` (`name`),
  FULLTEXT KEY `name_ft` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

表格中的数据:

jam name
53  Say Yes
54  testing
55  poijoik
56  stdd
57  Spartaaa!
58  Fearless
59  Mr. Mysterious
60  testmys
61  hello worlds

为什么我不能使用此查询找到“Say Yes”行?如果我使用LIKE js.name = 'say%',它就可以工作。

SELECT *
FROM rw_jam_search js
WHERE MATCH(js.name) AGAINST ('say*' IN BOOLEAN MODE)

1 个答案:

答案 0 :(得分:2)

默认情况下,缓存单词的最小长度为3,可以在配置文件中更改:

[mysqld]
ft_min_word_len=3

所以"说"不会为全文搜索编制索引。 如果您可以访问mySQL的存储文件,则可以使用:

myisam_ftdump rw_jam_search.MYI 0

列出将包含在全文搜索中的所有索引字词。

因此,如果您尝试此查询,它应该正常工作:

SELECT * FROM rw_jam_search
WHERE MATCH(`name`) AGAINST('worlds')

修改:与AGAINST()一起使用时,星号(*)完全不同,请查看documentation

相关问题