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

从MySQL 5.7.6开始,MySQL内置了ngram全文解析器,用来支持中文、日文、韩文分词。 本文使用的MySQL 版本是 5.7.19InnoDB数据库引擎并配合宝塔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; 

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

修改MYSQL配置

直接在宝塔linux里更改

新增这两行

ft_min_word_len = 1
ngram_token_size = 1

最后重启数据库即可

未经允许不得转载:我爱源代码 » MySQL使用中文全文检索设置单个字查询方法

热门文章

  • 相关推荐

    • 暂无文章

    评论 抢沙发

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活