本文介紹了使用AnalyticDB for MySQL進行全文檢索索引建立全文索引的方法。
前提條件
叢集核心版本需為3.1.4.9及以上版本。
推薦使用核心版本為3.1.4.17及以上的AnalyticDB for MySQL叢集。
如何查看叢集的核心版本,請參見如何查看執行個體版本資訊。
使用限制
全文索引僅支援對一列進行設定,如需對多個列建立全文索引,可通過在多個列上單獨建立全文索引實現。
全文索引只支援VARCHAR類型的列。
可見策略
AnalyticDB for MySQL的全文索引對新寫入的資料即時可見。
歷史資料需要使用
BUILD TABLE `表名` force=true;
強制建立索引。
建立表時添加全文索引
文法結構
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]} [, ... ] )
table_attribute
[partition_options]
[AS] query_expression
COMMENT 'string'
參數說明
參數 | 說明 |
table_name | 表名。 表名以字母或底線(_)開頭,可包含字母、數字以及底線(_),長度為1~127個字元。支援 |
column_name | 列名。 列名以字母或底線(_)開頭,可包含字母、數字以及底線(_),長度為1~127個字元。 |
column_type | 要添加的列的資料類型。至少有一列的資料類型為VARCHAR。 AnalyticDB for MySQL支援的資料類型,請參見基礎資料類型。 |
column_attributes | 列屬性。AnalyticDB for MySQL支援的列屬性,詳情請參見CREATE TABLE。 |
column_constraints | 列約束條件。AnalyticDB for MySQL支援的列約束,詳情請參見CREATE TABLE。 |
FULLTEXT | 定義全文索引。 |
INDEX|KEY | 全文索引的關鍵字標識。INDEX和KEY無差異。 |
index_name | 全文索引名稱。 |
column_name | 全文索引的列。必須是VARCHAR類型的列。 |
index_option | 可指定全文索引的分詞器和自訂字典。 |
樣本
建立表tbl_fulltext_name
時,為列content
設定了全文索引。
CREATE TABLE `tbl_fulltext_name` (
`id` int,
`content` varchar,
`keyword` varchar,
FULLTEXT INDEX fidx_c(`content`),
PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);
您可以通過以下語句查看錶的索引。
SHOW index from tbl_fulltext_name;
返回結果如下:
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tbl_fulltext_name | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| tbl_fulltext_name | 1 | id_0_idx | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| tbl_fulltext_name | 1 | keyword_2_idx | 1 | keyword | A | 0 | NULL | NULL | | BTREE | | |
| tbl_fulltext_name | 1 | fidx_c | 1 | content | A | 0 | NULL | NULL | | FULLTEXT | | |
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
為已存在的表添加全文索引
文法結構
ALTER TABLE `table_name` ADD FULLTEXT [INDEX|KEY] index_name (column_name) [index_option]
參數說明
詳情的參數說明,請參見建立表時添加全文索引。
樣本
建立表
tbl_fulltext_name
。CREATE TABLE `tbl_fulltext_name` ( `id` int, `content` varchar, `keyword` varchar, FULLTEXT INDEX fidx_c(`content`), PRIMARY KEY (`id`) ) DISTRIBUTED BY HASH(id) INDEX_ALL = 'N';
對列
keyword
添加全文索引,設定全文索引的名稱為fidx_k,同時指定Standard分詞器。說明不指定分詞器時,將採用預設分詞器。詳情請參見全文索引的分詞器。
ALTER TABLE `tbl_fulltext_name` ADD FULLTEXT INDEX fidx_k(`keyword`) WITH ANALYZER standard;
如需對歷史資料建立全文索引,請執行下列語句。Build任務結束後索引才會生效,構建全文索引花費的時間和資料量有關係。
BUILD TABLE `tbl_fulltext_name` force=true;
刪除全文索引
文法結構
ALTER TABLE table_name DROP FULLTEXT INDEX index_name;
樣本
刪除表tbl_fulltext_name
中全文索引fidx_k
。
ALTER TABLE `tbl_fulltext_name` DROP FULLTEXT INDEX fidx_k;