侧边栏壁纸
  • 累计撰写 19 篇文章
  • 累计收到 0 条评论

MySQL使用中文全文检索设置单个字查询方法

nohapa
2020-10-27 / 0 评论 / 141 阅读 / 正在检测是否收录...

从MySQL 5.7.6开始,MySQL内置了ngram全文解析器,用来支持中文、日文、韩文分词。 本文使用的MySQL 版本是 5.7.19,InnoDB数据库引擎并配合宝塔linux使用,全文检索适用于小型网站来代替elasticsearch和shiro

ngram全文解析器

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; 

重连数据库,刷新查看索引的创建情况:

image-9.png

修改MYSQL配置
直接在宝塔linux里更改

新增这两行

ft_min_word_len = 1
ngram_token_size = 1

最后重启数据库即可

image-10.png

0

评论 (0)

取消