MySQL5.7自带分词搜索使用

如果MySQL数据库是低于5.7版本的,需要备份数据库并且更新为5.7

原理:

ngram全文解析器

ngram就是一段文字里面连续的n个字的序列。

ngram全文解析器能够对文本进行分词,每个单词是连续的n个字的序列。

例如,用ngram全文解析器对“恭喜发财”进行分词:

n=1: '恭', '喜', '发', '财' 
n=2: '恭喜', '喜发', '发财' 
n=3: '恭喜发', '喜发财' 
n=4: '恭喜发财'

准备:

MySQL 中使用全局变量 ngram_token_size 来配置 ngram 中 n 的大小,它的取值范围是1到10,默认值2。通常ngram_token_size设置为要查询的单词的最小字数。如果需要搜索单字,就要把ngram_token_size设置为1。在默认值是2的情况下,搜索单字是得不到任何结果的。因为中文单词最少是两个汉字,推荐使用默认值2。

在修改MySQL配置文件 my.ini 中,末尾增加一行 ngram_token_size 的参数设置:

ngram_token_size=2

创建索引:

在原有的数据库上执行命令行添加full text索引,建议通过执行SQL语句的方式执行,部分数据库工具无法正常创建full text索引

创建fulltext索引语句为:

alter table `local` add fulltext index fulltext_intro(`intro`) WITH PARSER ngram;

使用:

SELECT
    MATCH (`name`) AGAINST ('设计') AS score,
    `name`
FROM
    `local`
WHERE
    MATCH (`name`) AGAINST ('设计网站' IN NATURAL LANGUAGE MODE);

参考资料:MySQL分词

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值