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 引擎都支持全文索引。
可以在控制台
参数设置来设置下列参数。
#
参数名称
默认值
最小值
最大值
作用
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。
innodb 引擎表需要将 innodb_ft_min_token_size 设置为小于等于需要检索的最小分词长度,设置完毕后建议重新创建表上已有的全文索引;对于中文检索,建议将 ft_min_word_len 设置为 1。
对于数据量比较小,查询条件无法分词的情况下,可以考虑使用 like '%xxx%' 来进行查询。但是由于 like '%xxx%' 这样的条件无法使用字段上的索引,因此通常执行时间较长,会耗费比较多的资源;建议结合查询其他条件来使用,这样可以尽量使用其他字段的索引来加速查询。
全文检索本身是按 词 进行匹配,因此返回的结果会和 like '%xxx%' 的方式有所区别。
参数 ft_query_expansion_limit 的作用是指定myisam引擎表使用with query expansion进行全文搜索的最大匹配数,下面以一个例子来说明其作用。
参数 ft_query_expansion_limit 当前设置为 20:
当前表中相关的记录情况:
使用查询扩展的结果: