我正在尝试使用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)发布于 2012-06-07 20:00:03
默认缓存单词的最小长度为3,可在配置文件中修改:
[mysqld]
ft_min_word_len=3因此,"say“一词不会被编入全文搜索的索引。如果您有权访问mySQL的存储文件,则可以使用:
myisam_ftdump rw_jam_search.MYI 0列出将包含在全文搜索中的所有索引词。
因此,如果您尝试这个查询,它应该可以很好地工作:
SELECT * FROM rw_jam_search
WHERE MATCH(`name`) AGAINST('worlds')编辑:与AGAINST()一起使用时,星号(*)与documentation非常不同。请检查documentation
https://stackoverflow.com/questions/10929375
复制相似问题