文档

PolarDB MySQL全文检索相关问题及处理

更新时间:

本文主要介绍PolarDB MySQL版全文检索相关问题及处理。

详细信息

本文通过如下几个方面介绍全文检索:

PolarDB MySQL对全文检索的支持

PolarDB MySQL仅InnoDB引擎表支持全文索引。

PolarDB MySQL全文检索相关参数

查看InnoDB引擎表全文检索相关参数,SQL语句如下所示。

show global variables like 'innodb_ft%';

在控制台参数设置页面中可设置下列参数,详情请参见设置集群参数和节点参数

参数名称

作用

innodb_ft_min_token_size

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

取值范围:0~16。默认值为3。

innodb_ft_max_token_size

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

取值范围:10~84。默认值为84。

PolarDB MySQL对中文全文检索的支持

InnoDB引擎表支持中文全文检索。您需要将innodb_ft_min_token_size设置为小于等于需要检索的最小分词长度,然后重新创建表中已有的全文索引。

说明

对于中文检索,建议将ft_min_word_len设置为1,否则可能出现查不到数据的情况。

重建全文索引示例,表结构如下所示。

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;

重建全文索引步骤。

  1. 执行如下SQL语句,删除已有的全文索引。

    alter table my_ft_test_01 drop key idx_ft_name;
  2. 执行如下SQL语句,重新添加全文索引。

    alter table my_ft_test_01 add fulltext key idx_ft_name (name);

LIKE语句和全文检索的比较

  • LIKE语句

    对于数据量比较小,查询条件无法分词的情况,您可以使用LIKE来进行查询,如下图所示。但LIKE这样的条件无法使用字段上的索引,因此通常执行时间较长且会耗费比较多的资源。您可以结合其他查询条件来使用,这样可以尽量使用其他字段的索引来加速查询。like

  • 全文检索

    全文检索本身是按词进行匹配,因此返回的结果会和LIKE的方式有所区别,如下图所示。全文检索

  • 本页导读 (0)
文档反馈