【MySQL】全文索引(FULLTEXT)的使用
一:概念
全文索引与普通的索引不是一回事,在查找上方面其效率是普通模糊(like)查询和N倍,是MySQL专门提供用作搜索引擎的
二:版本支持
Mysql 5.6之前版本,只有MyISAM支持全文索引,5.6之后,Innodb和MyISAM均支持全文索引
另外,只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引
三:ngram解析器
5.6之后MySQL自带ngram解析器,可以解析中日韩三国文字,如果不使用ngram解析器,则MySQL默认使用空格与符号作为分隔符(对于英文自然够用了,但对于中日韩文字就不好用了,所以才需要ngram解析器)
四:开始使用
1:创建索引
用可视化工具创建就好了
2:查询语句
全文索引有专用的查询语法:match(字段) against(关键字)
如:select * from answer where match(content) against("测试表")
3:为了更好的搜索效果,通常会配置最小搜索长度
全文索引的相关参数都无法进行动态修改 ,必须通过修改MySQL的配置文件来完成 。通常修改最小搜索长度的值为2,首先打开MySQL的配置文件 (MySQL8.0的配置文件为:my.ini),在 [mysqld] 的下面追加以下内容
// MyISAM
ft_min_word_len = 4; 默认值
ft_max_word_len = 84; 默认值
// InnoDB
innodb_ft_min_token_size = 3; 默认值
innodb_ft_max_token_size = 84; 默认值
//ngram解析器令牌长度----即against()中字符串切分的最小字符长度
ngram_token_size = 2~10 ; 默认值
一般设定:(以下例子均是假定设置如下)
在 [mysqld]的下面追加:
innodb_ft_min_token_size = 2
ft_min_word_len = 2