MySQL全文索引:高效文本搜索的优化之道
创始人
2024-12-28 02:08:16
0 次浏览
0 评论
MySQL之全文索引二三事
MySQL全文索引是一种用于快速搜索文本字符串的索引,可以提高文本搜索的效率。与常规索引仅对列值进行排序不同,全文索引通过分词索引内容,支持模糊搜索、部分匹配和多词搜索。
要创建全文索引,您需要提供索引名称、表名称和列名称。
或者,您可以使用WithPARSER子句来指定解析器。
全文索引适用于CHAR、VARCHAR、TEXT和BLOB字段。
MySQL5.6之前,仅支持MyISAM存储引擎。
5.6版本之后,InnoDB也支持它。
全文索引使用MATCHAGAINST运算符来执行查询。
内置全文解析器使用某些分隔符(例如空格、逗号和句点)确定单词位置。
中文需要ngram或MeCab解析器插件。
ngram将文本序列标记为n个连续字符的序列。
n的取值范围为1~10。
设置为1支持搜索单个字符。
使用ngram创建全文索引并查询包含特定字符的记录。
将ngram_token_size设置为1可以支持单个汉字请求。
如果大于1,则对汉字进行分割查找。
查询包含“刘”和“雅”的记录,需要将ngram_token_size设置为1。
查询结果仅包含匹配完整短语的文档。
MySQL全文检索支持自然语言模式和布尔模式。
默认自然语言模式使用自然语言处理技术返回最相关的结果。
布尔模式允许您组合搜索词并更精确地控制结果。
全文索引比LIKE“%%”操作更高效,尤其是在处理大量数据时。
说明:MySQL使用全文索引来提高文本搜索的效率。
通过创建全文索引并使用MATCHAGAINST进行查询,需要ngram解析器支持中文搜索。
全文检索模式包括自然语言模式和布尔模式,全文索引优于LIKE“%%”操作。
使用全文索引和优化性能是关键。
mysql8全文检索应用之一:参数配置
使用阿里云RDS管理后端管理MySQL8.0数据库时,请确保根据实际需要正确配置相关参数。配置参数包括:1.1.修改MySQL参数配置通过进入RDS管理平台的参数配置界面,调整选定的配置项以适应您的具体需求。
完成后,单击提交参数按钮。
请注意,对于生产环境,重新启动服务时请谨慎。
1.2.发送参数。
发送参数后,系统提示需要重启服务。
在生产环境中,请谨慎执行此操作,以保证数据库稳定运行。
2.创建索引。
完成MySQL配置后,您就可以开始创建全文索引以支持全文搜索功能。
2.1.创建全文索引创建索引时,指定要添加到全局索引的列,如(title,body),多个列之间用逗号分隔。
确保在create语句末尾添加“withparserngram”以支持中文分词。
2.2.ngram解析器为了支持中文全文检索,创建索引时必须使用ngram解析器。
2.3.全文检索SQL语句在进行全文检索时,要注意命令的正确书写,以保证查询效率。
3、全文检索模式MySQL提供了两种流行的全文检索模式:自然语言模式和BOOLEAN模式。
3.1.自然语言模式默认的自然语言模式是MySQL全文检索模式,支持基本的全文检索,但不支持复杂的查询条件。
3.2.BOOLEAN模式BOOLEAN模式提供更高级的全文搜索功能,并允许使用运算符进行更复杂的查询。
推荐使用该模式。
3.3.MySQL布尔全文检索运算符下表介绍了全文布尔检索运算符及其功能:3.4MySQL布尔全文检索主要功能功能使用MySQL全文检索,文章高效、准确。
即可实现搜索。
应用示例:对网站上的文章部署全文搜索功能,用户可以通过关键字搜索找到所需的内容。
例如:在打字练习网站(dazigo.vip)上,用户可以轻松搜索到相关打字练习文章。
后续文章将继续探讨mybatis-plus框架内全文检索的相关技术。
MySQL全文索引应用简明教程
MySQL从5.7版本开始支持内置的ngram全文搜索插件,专门用于处理中文语义分词。要使用ngram插件,必须首先在MySQL配置文件中设置令牌大小,例如:[mysqld]ngram_token_size=2。
这一步设置的分词大小越大,索引大小就越大。
创建示例表结构时,可以使用以下SQL语句:CREATETABLEarticles(idINTUNSIGNEDAUTO_INCRMENTNOTNULLPRIMARYKEY,titleVARCHAR(200),bodyTEXT,FULLTEXT(title,body)WITHPARSERngram)ENGINE=InnoDBCHARACTERSETutf8mb4;插入示例数据如下:mysql>SELECT*FROMarticles在ngram插件中,您可以指定全文搜索的来源:SETGLOBALinnodb_ft_aux_table="new_feature/articles";SELECT*FROMinformation_schema.INNNODB_FT_INDEX_CACHELIMIT20,10;检索操作的示例包括:1.自然语言检索:如SELECTCOUNT(*)FROMarticlesWHEREMATCH(title,body)AGAINST('database'INNATURALLANGUAGEMODE:例如SELECTWHROM)。
EMATCH(title,body)AGAINST('+database+management'INBOOLEANMODE3.查询扩展方式:如SELECT*FROMarticlesWHEREMATCH(title,body)AGAINST('database'WITHQUERYEXPANSION)上面演示了ngram插件的使用-);在MySQL中,您可以自己执行多项性能测试。
N-gram作为常的中文分词算法,在互联网上得到了广泛的应用。
这次集成到MySQL中,预计不会对性能产生大的影响。
相关文章
SQL技巧分享:编写函数提取字符串中的数...
2024-12-17 10:59:38PL/SQL导入SQL文件教程:两种方法...
2024-12-31 23:13:12MySQL高效处理亿级数据策略全解析
2024-12-31 12:07:44SQL技巧分享:高效截取字符串前几位字符...
2024-12-15 09:44:04SQL子查询全解析:掌握四种类型,提升数...
2024-12-29 23:35:20Oracle SQL日期格式插入与查询教...
2024-12-16 11:51:37SQL创建表后默认无数据,学会插入操作让...
2024-12-24 11:03:32Oracle substr函数应用:高效...
2024-12-17 10:48:25MySQL存储引擎查看指南:两种实用方法...
2025-01-12 15:42:16MySQL数据表字段修改技巧与ALTER...
2024-12-24 22:14:36最新文章
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
热门文章
1
Python代码实现:如何判断三角形的三...
python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...
2
高效掌握:CMD命令轻松启动、关闭及登录...
如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...
3
SQL字段默认值设置全攻略:轻松实现自动...
sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...
4
MySQL查询加速秘籍:PolarDB ...
mysql中in大量数据导致查询速度慢怎么优化?在MySQL中处理大量数据时,查...
5
SQL2000数据库备份压缩技巧:优化空...
怎么将SQL2000中的较大的备份数据库压缩变小更改数据库属性-选项-恢复模型很...
6
SQL字符串处理技巧:单引号使用与转义标...
SQL语句中,字符串类型的值均使用什么符号标明?单引号如果字符串内有单引号,请小...
7
Windows环境下Redis安装指南与...
redis安装windowsredis基本简介与安装安装Redis首先需要获取安...
8
深度解析:Redis性能优势与局限性,助...
redis有哪些优缺点?Redis的全称是RemoteDictionary.Se...
9
深入解析:MySQL数据库的特性与应用
mysql是什么MySQL是一个关系数据库管理系统。MySQL是一个开源关系数据...
10
SQL必备:详解常用字符串函数及数据类型...
sql常用的字符串函数都有哪些常用的字符串函数有:1.字符转换功能1.ASCII...