MySQL 5.7.6的ngram全文检索与关键词跑分实战
版权申诉
12 浏览量
更新于2024-09-11
1
收藏 228KB PDF 举报
本文主要介绍了如何在MySQL中实现全文检索和关键词跑分的功能,特别是针对5.7.6版本及之后引入的ngram全文解析器,适用于中文、日文和韩文的分词处理。
一、全文检索背景与MySQL全文索引
在遇到需要快速全文搜索但又无法使用专门搜索引擎如ElasticSearch的场景时,MySQL的全文检索功能就显得尤为重要。自5.7.6版本起,MySQL内置了ngram全文解析器,解决了对中文等非英文字符的全文索引问题。在早期版本中,对于中文全文索引,开发者通常需要借助外部分词工具预先处理数据。
二、ngram全文解析器
1. ngram概念:ngram是连续n个字符的序列,用于分词。例如,对于字符串“你好世界”,当n=2时,分词结果为“你好”、“好世”、“世界”。
2. 配置参数:`ngram_token_size`控制n的大小,范围1到10,默认值2。设置为1可支持单字搜索,而2更适合中文单词,因为通常中文单词由两个或更多汉字组成。
3. 设置方法:可以通过启动mysqld时指定或修改配置文件来调整`ngram_token_size`的值。
三、创建全文索引
以一个文书数据表为例,可以按照以下步骤创建全文索引:
1. 建表时创建全文索引:在创建表`t_wenshu`时,为包含文书内容的字段添加全文索引,如`CREATE TABLE t_wenshu (...) FULLTEXT INDEX idx_content (content);`
2. 导入数据:向表中导入10w条测试数据,以便进行全文检索测试。
四、关键词跑分
1. 使用`MATCH...AGAINST`语句进行全文搜索和跑分:如`SELECT * FROM t_wenshu WHERE MATCH(content) AGAINST('关键词');`,`MATCH()`函数用于指定全文索引字段,`AGAINST()`则包含搜索的关键词。
2. `IN BOOLEAN MODE`:添加此选项可启用布尔模式搜索,允许使用加号(+)、减号(-)等操作符来提高或降低特定关键词的重要性。
3. `WITH QUERY EXPANSION`:启用查询扩展功能,会基于初始搜索结果返回相关的额外结果。
五、优化全文检索
1. 确保索引字段内容是合适的大小写,因为MySQL全文检索不区分大小写。
2. 考虑使用`ALTER TABLE ... OPTIMIZE TABLE`优化表,以更新索引并提高搜索性能。
3. 调整`ft_min_word_len`系统变量,控制被索引的最短单词长度,以包含更多词汇。
4. 使用`FT stopwords`(停止词)列表排除常见无意义词汇,提高搜索效率。
总结来说,MySQL的全文检索功能虽然不及专门的搜索引擎强大,但在数据量不大、时间紧迫的情况下,能提供一种快速实现全文搜索的解决方案。通过正确配置ngram全文解析器和建立全文索引,结合关键词跑分技术,可以在MySQL中实现基本的全文检索需求。
2009-08-21 上传
2020-09-09 上传
3263 浏览量
3280 浏览量
876 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38597889
- 粉丝: 12
- 资源: 987
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器