总结用 MySQL 做全文检索功能时遇到的坑

总结用 MySQL 做全文检索功能时遇到的坑_第1张图片

全文检索

存储引擎

存储引擎记得设置为 InnoDB

创建倒排索引

ALTER TABLE 表名 ADD FULLTEXT INDEX 索引名称 (字段1,字段2,字段3) WITH PARSER ngram;

注意:后面要加上WITH PARSER ngram 才可以进行中文检索,ngram是一个全文解析器
且建立MySQL倒排索引时,尽量用一条语句去创建多个字段的倒排索引,比如你需要将三个字段都创建上倒排索引,那么不要用三条语句去执行,否则可能会出现 “找不到倒排索引的问题”。

分词长度

ngram_token_size 属性
查看当前分词长度

SHOW VARIABLES LIKE 'ft%';

总结用 MySQL 做全文检索功能时遇到的坑_第2张图片
可以看的我的分词长度为2 也就是说如果输入“我爱学习”四个字,那么就会拆分成 “我爱”,“爱学”,“学习”,最小两个字进行检索,但MySQL默认此长度为4,搜索较长的字符没有问题,搜索四个字以下的内容就不能正常使用了。
修改方法:在my.ini文件下的 [mysqld] 下面加上 ngram_token_size = 2 即可,当然也可以设置成1。如果是Linux系统则修改my.cnf文件。
修改完成后重启 MySQL服务,重新建立倒排索引后方可生效。

检索语句

MySQL全文检索语句如下:

SELECT * FROM 表名 WHERE MATCH(列名1,列名2) AGAINST(检索内容1 检索内容2);

检索内容不需要用逗号隔开!,此处为坑,故进行记录分享。

欢迎关注微信公众号"程序员小辉"

微信图片20190813101011.jpg

你可能感兴趣的:(MySQL,MySQL)