首页 新闻 会员 周边

mysql全文索引FULLTEXT,为什么有的单词检索不到?

0
悬赏园豆:5 [待解决问题]

MySQL使用FULLTEXT时,有的单词检索不出来?类似介词(to、of等)的直接忽略?求大神给解释下。谢谢^_^

表结构&数据:

复制代码
CREATE TABLE IF NOT EXISTS `category` (
`id` int(10) NOT NULL auto_increment,
`fid` int(10) NOT NULL,
`catname` char(255) NOT NULL,
`addtime` char(10) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `catname` (`catname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;      

INSERT INTO `category` (`id`, `fid`, `catname`, `addtime`) VALUES
(1, 0, 'welcome to you!', '1263363380'),
(2, 0, 'hello phpjs,you are welcome', '1263363416'),
(3, 0, 'this is the fan site of you xp 你好', '1263363673');
复制代码

执行查询一(返回空集):

SELECT * FROM category where match(catname) against('of');

执行查询一(返回一行记录):

SELECT * FROM my_project.category where match(catname) against('xp');

 

 

备注:

最小分词长度已经修改为1。

leungcnblogs的主页 leungcnblogs | 初学一级 | 园豆:162
提问于:2018-03-27 11:15
< >
分享
所有回答(3)
0

ft_stopword_file (built-in) 你的词都已经默认的过滤了,所以没结果.

MAU | 园豆:202 (菜鸟二级) | 2019-05-30 14:46
0

FULLTEXT KEY catname (catname) WITH PARSER ngram
创建索引时加上 WITH PARSER ngram 就可以了

渺小的人类 | 园豆:202 (菜鸟二级) | 2020-08-27 15:12
0

1楼回答是正确的,使用 SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD; 可以查看被过滤的单词,补充一点:如果搜索的 字符或数字 小于4位,设置了ft_min_word_len=1 还是搜不到,这个时候就要看你的表存储引擎是不是 InnoDB,InnoDB需要设置 innodb_ft_min_token_size=1,这时候发现 单个数字 也能搜到了!

codeIsArt | 园豆:202 (菜鸟二级) | 2021-09-02 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册