MySQL全文搜索
一、前言
虽然在搜索领域,ES一骑绝尘,但ES部署运维、以及数据库的更新同步还是有些麻烦的。那么涉及到的一些对搜索要求不那么高的功能,比如说关键词联想、文章搜索等大部分场景,笔者考虑还是尽量在MySQL实现以减轻开发和运维成本。MySQL本身是自带简单的全文搜索引擎的。
二、分词配置
MySQL从5.7开始支持InnoDB引擎的中文分词全文检索。
软件版本:MySQL 5.7.34
ngram分词器
用ngram全文解析器对“生日快乐”进行分词:
n=1: '生', '日', '快', '乐'
n=2: '生日', '日快', '快乐'
n=3: '生日快', '日快乐'
n=4: '生日快乐'
一般默认n=2
,n=1的情况对于搜索而言没有太多意义,反而会导致搜索精度问题,搜索出来的排序不是自己想要的。(可能是相关度计算排序这块,笔者不是很清楚,希望懂的朋友不吝指教)
如果确实需要更改,可以修改配置文件:
[mysqld]
ngram_token_size=1
然后重启:
SHOW VARIABLES LIKE '%ngram%';
三、创建索引
使用ngram
分词器创建索引:
ALTER TABLE `dbtest`.`msg`
ADD FULLTEXT INDEX (`msg`) WITH PARSER ngram;
若是需要搜索两个字段则需要创建复合索引:
ALTER TABLE `dbtest`.`post`
ADD FULLTEXT INDEX (`title`, `content`) WITH PARSER ngram;
四、搜索效果
SELECT *,MATCH (title,content) AGAINST ('赤壁赋') AS score
FROM post WHERE MATCH (title,content) AGAINST ('赤壁赋');
五、参考资料
MySQL 5.7 中文全文检索使用教程
MySQL中文全文检索
mysql全文索引查询相关度、相似度、权重值
如果本文有帮到你,请点个赞让我知道 😃
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggfie
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13