从MySQL 5.7.6开始,MySQL内置了ngram全文解析器,用来支持中文、日文、韩文分词。 本文使用的MySQL 版本是 5.7.19,InnoDB数据库引擎并配合宝塔linux使用,全文检索适用于小型网站来代替elasticsearch和shirongram全文解析器
ngram就是一段文字里面连续的n个字的序列。
ngram全文解析器能够对文本进行分词,每个单词是连续的n个字的序列。
例如,用ngram全文解析器对“小猪”进行分词:n=1: '小', '猪'
n=2: '小猪'
MySQL 中使用全局变量 ngram_token_size 来配置 ngram 中 n 的大小,它的取值范围是1到10,默认值是 2。通常ngram_token_size设置为要查询的单词的最小字数。如果需要搜索单字,就要把ngram_token_size设置为1。在默认值是2的情况下,搜索单字是得不到任何结果的。因为中文单词最少是两个汉字,推荐使用默认值2。创建全文索引
1、建表 doutu_gif
2、创建全文索引
创建字段 gif_name 和 gif_tag 的联合全文索引,语句如下:ALTER TABLE doutu_gif ADD FULLTEXT INDEX ft_index (gif_name,gif_tag) WITH PARSER ngram;
重连数据库,刷新查看索引的创建情况:
修改MYSQL配置
直接在宝塔linux里更改
新增这两行
ft_min_word_len = 1
ngram_token_size = 1
最后重启数据库即可