天天看点

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

rds mysql 全文检索相关问题

<a href="#1">1. rds for mysql 对全文检索的支持</a>

<a href="#2">2. rds for mysql 全文检索相关参数</a>

<a href="#3">3. rds for mysql 全文检索中文支持</a>

<a href="#3.1">3.1 myisam 引擎表</a>

<a href="#3.2">3.2 innodb 引擎表</a>

<a href="#4">4. like '%xxx%' 和全文检索的比较</a>

<a href="#4.1">4.1 like '%xxx%'</a>

<a href="#4.2">4.2 全文检索</a>

<a href="#5">5. ft_query_expansion_limit 参数作用</a>

rds mysql 5.5 仅 myisam 引擎表支持全文索引,rds mysql 5.6 版本 myisam 和 innodb 引擎都支持全文索引。

可以在控制台 

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

 参数设置来设置下列参数。

#

参数名称

默认值

最小值

最大值

作用

1

ft_min_word_len

4

3600

myisam 引擎表全文索引包含的最小词长度

2

ft_query_expansion_limit

20

1000

myisam引擎表使用 with query expansion 进行全文搜索的最大匹配数

3

innodb_ft_min_token_size

16

innodb 引擎表全文索引包含的最小词长度

innodb_ft_max_token_size

84

10

innodb 引擎表全文索引包含的最大词长度

myisam 引擎表和 innodb 引擎表(需 rds mysql 5.6 版本)都支持中文全文检索。

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

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

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

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

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

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

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

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

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

参数 ft_query_expansion_limit 当前设置为 20:

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

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

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

使用查询扩展的结果:

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

继续阅读