RDS for MySQL 全文检索相关问题的处理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: RDS for MySQL 全文检索相关问题的处理   RDS MySQL 全文检索相关问题 1. RDS for MySQL 对全文检索的支持 2. RDS for MySQL 全文检索相关参数 3.

RDS for MySQL 全文检索相关问题的处理

 

RDS MySQL 全文检索相关问题

1. RDS for MySQL 对全文检索的支持

2. RDS for MySQL 全文检索相关参数

3. RDS for MySQL 全文检索中文支持

3.1 MyISAM 引擎表

3.2 InnoDB 引擎表

4. like '%xxx%' 和全文检索的比较

4.1 like '%xxx%'

4.2 全文检索

5. ft_query_expansion_limit 参数作用


1. RDS for MySQL 对全文检索的支持

RDS MySQL 5.5 仅 MyISAM 引擎表支持全文索引,RDS MySQL 5.6 版本 MyISAM 和 InnoDB 引擎都支持全文索引。

 

2. RDS for MySQL 全文检索相关参数

可以在控制台  参数设置来设置下列参数。

# 参数名称 默认值 最小值 最大值 作用
1 ft_min_word_len 4 1 3600 MyISAM 引擎表全文索引包含的最小词长度
2 ft_query_expansion_limit 20 0 1000 MyISAM引擎表使用 with query expansion 进行全文搜索的最大匹配数
3 innodb_ft_min_token_size 3 0 16 InnoDB 引擎表全文索引包含的最小词长度
4 innodb_ft_max_token_size 84 10 84 InnoDB 引擎表全文索引包含的最大词长度
show global variables like 'ft_%'; --查看 MyISAM 引擎表全文检索相关参数

show global variables like 'innodb_ft%'; --查看 InnoDB 引擎表全文检索相关参数

3. RDS MySQL 全文检索中文支持

MyISAM 引擎表和 InnoDB 引擎表(需 RDS MySQL 5.6 版本)都支持中文全文检索。

 

3.1 MyISAM 引擎表

MyISAM 引擎表需要将 ft_min_word_len 设置为小于等于需要检索的最小分词长度,设置完毕后建议重新创建表上已有的全文索引;对于中文检索,建议将 ft_min_word_len 设置为 1。

ft_02.png

CREATE TABLE `my_ft_test_02` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` text,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `idx_ft_name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

--重建全文索引步骤:

alter table my_ft_test_02 drop key idx_ft_name; --删除已有的全文索引

alter table my_ft_test_02 add fulltext key idx_ft_name (name); --重新添加全文索引

3.2 InnoDB 引擎表

InnoDB 引擎表需要将 innodb_ft_min_token_size 设置为小于等于需要检索的最小分词长度,设置完毕后建议重新创建表上已有的全文索引;对于中文检索,建议将 ft_min_word_len 设置为 1。

ft_01.png

CREATE TABLE `my_ft_test_01` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` text,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `idx_ft_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

--重建全文索引的步骤:

alter table my_ft_test_01 drop key idx_ft_name; --删除已有的全文索引

alter table my_ft_test_01 add fulltext key idx_ft_name (name); --重新创建全文索引

4. like '%xxx%' 和全文检索的比较

4.1 like '%xxx%'

对于数据量比较小,查询条件无法分词的情况下,可以考虑使用 like '%xxx%' 来进行查询。但是由于 like  '%xxx%' 这样的条件无法使用字段上的索引,因此通常执行时间较长,会耗费比较多的资源;建议结合查询其他条件来使用,这样可以尽量使用其他字段的索引来加速查询。

ft_03.png

 

4.2 全文检索

全文检索本身是按 进行匹配,因此返回的结果会和 like '%xxx%' 的方式有所区别

ft_04.png

 

5. ft_query_expansion_limit 参数作用

MySQL 全文检索支持扩展检索,具体请参考 带查询扩展的全文检索 

参数 ft_query_expansion_limit 的作用是指定MyISAM引擎表使用with query expansion进行全文搜索的最大匹配数,下面以一个例子来说明其作用。

参数 ft_query_expansion_limit 当前设置为 20:

ft_06.png

当前表中相关的记录情况:

ft_05.png

使用查询扩展的结果:

ft_07.png

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
关系型数据库 MySQL API
实时计算 Flink版产品使用合集之可以通过mysql-cdc动态监听MySQL数据库的数据变动吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
82 0
|
2天前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
13 0
|
2天前
|
SQL 关系型数据库 MySQL
RDS for MySQL的DDL、DML和DQL
这篇文章介绍了MySQL中处理数据的几种主要操作:DDL(Data Definition Language),DML(Data Manipulation Language)和DQL(Data Query Language)。首先讲解了如何使用CREATE DATABASE, ALTER DATABASE和DROP DATABASE语句来创建、修改和删除数据库。
12 1
|
8天前
|
DataWorks 关系型数据库 MySQL
DataWorks产品使用合集之在DataWorks中配置RDS MySQL数据源的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
28 0
|
8天前
|
存储 SQL 关系型数据库
MySql入门教程--MySQL数据库基础操作
MySql入门教程--MySQL数据库基础操作
|
8天前
|
存储 关系型数据库 MySQL
RDS for MySQL测试
【4月更文挑战第28天】
|
MySQL 关系型数据库 数据库
|
MySQL 关系型数据库 RDS
RDS for MySQL CPU 性能问题分析
RDS for MySQL CPU 性能问题分析 RDS for MySQL CPU 使用率高是使用 RDS for MySQL 实例过程中比较常见的一类性能问题。 由于实例 CPU 资源打满会直接导致业务受损,且问题发生过程迅速、临界时间短 统计采集困难、问题发生后统计指标呈反向曲线,加之日常运维过程中问题征兆容易被忽视,非常容易导致用户体感问题突然性强烈,因此在这里我们对 RDS for MySQL 的 CPU 使用率高的原因做一个比较详细的分析说明。
2245 0