如果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分词