云数据仓库ADB如何开启全字段索引?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在云原生数据仓库AnalyticDB(简称ADB)中,开启全字段索引需要通过创建全文索引来实现。以下是详细的操作步骤和注意事项:
在开启全字段索引之前,请确保满足以下条件: - 集群内核版本需为3.1.4.9及以上,推荐使用3.1.4.17及以上版本。 - 全文索引仅支持对VARCHAR类型的列进行设置。如果需要对多个列创建索引,需分别对每列单独创建全文索引。
如果您正在创建新表,可以在建表语句中直接定义全文索引。语法如下:
CREATE TABLE [IF NOT EXISTS] table_name (
column_name column_type [column_attributes] [column_constraints] [COMMENT 'string']
[FULLTEXT [INDEX|KEY] [index_name] (column_name)] [index_option]
) DISTRIBUTED BY HASH(column_name);
假设需要为content
列和keyword
列创建全文索引,可以使用以下SQL语句:
CREATE TABLE tbl_fulltext_name (
id INT,
content VARCHAR,
keyword VARCHAR,
FULLTEXT INDEX fidx_content(content),
FULLTEXT INDEX fidx_keyword(keyword) WITH ANALYZER standard,
PRIMARY KEY (id)
) DISTRIBUTED BY HASH(id);
说明: - fidx_content
和 fidx_keyword
是索引名称,您可以根据需求自定义。 - WITH ANALYZER standard
指定了分词器,可根据实际需求选择不同的分词器(如alinlp
、ik
等)。
如果表已经存在,可以通过ALTER TABLE
语句为指定列添加全文索引。语法如下:
ALTER TABLE table_name ADD FULLTEXT [INDEX|KEY] index_name (column_name) [index_option];
为表tbl_fulltext_name
的keyword
列添加全文索引,并使用standard
分词器:
ALTER TABLE tbl_fulltext_name ADD FULLTEXT INDEX fidx_keyword(keyword) WITH ANALYZER standard;
对于已存在的历史数据,需要手动触发BUILD
任务以使全文索引生效。语法如下:
BUILD TABLE table_name force=true;
对表tbl_fulltext_name
的历史数据建立全文索引:
BUILD TABLE tbl_fulltext_name force=true;
重要提示: - 强制全表BUILD会对全表所有存量数据重新构建索引,耗时较长,建议在业务低峰期执行。 - 在BUILD任务期间,该表不能执行INSERT OVERWRITE SELECT
导入任务,但可以使用INSERT INTO
进行数据写入。
创建或添加全文索引后,可以通过全文检索函数验证索引是否生效。例如,使用match() against()
函数进行查询:
SELECT * FROM tbl_fulltext_name WHERE match(content) against('关键词');
注意事项: - 查询时需对特殊字符(如+-&|!(){}[]^"\\~*?:\/
)进行转义处理,转义符为\\
。 - 全文索引函数不支持=
、!=
、between
、is null
、is not null
以及like
等操作符。
如果需要删除某个全文索引,可以使用以下语法:
ALTER TABLE table_name DROP FULLTEXT INDEX index_name;
删除表tbl_fulltext_name
中的全文索引fidx_keyword
:
ALTER TABLE tbl_fulltext_name DROP FULLTEXT INDEX fidx_keyword;
BUILD
任务强制建立索引后才能生效。通过以上步骤,您可以在云数据仓库ADB中成功开启并管理全字段索引。如果有进一步的需求或问题,请参考相关文档或联系技术支持。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。