Índices full-text permitem executar consultas de busca full-text em colunas VARCHAR no AnalyticDB for MySQL. Este tópico aborda a criação, a verificação e a remoção de índices full-text em tabelas novas e existentes.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster do AnalyticDB for MySQL com a versão V3.1.4.9 ou posterior (recomenda-se a V3.1.4.17 ou posterior)
Para verificar a versão do cluster, consulte Como consultar a versão de um cluster do AnalyticDB for MySQL?.
Limitações
Crie um índice full-text em apenas uma coluna por vez. Para indexar várias colunas, execute uma instrução
FULLTEXTseparada para cada uma.Índices full-text são compatíveis apenas com colunas do tipo VARCHAR.
Como funciona
No AnalyticDB for MySQL, a aplicação de índices full-text varia conforme o momento da gravação dos dados:
Dados recém-gravados: indexação em tempo real, sem etapas adicionais.
Dados históricos: não há indexação automática. Após adicionar o índice, execute
BUILD TABLE ... force=true;para indexar as linhas existentes. Consultas sobre dados históricos não terão aceleração até a conclusão da tarefa BUILD.
Criar um índice full-text ao criar uma tabela
Sintaxe
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'
Onde index_option pode ser:
-- Specify the analyzer (optional):
WITH ANALYZER analyzer_name
-- Specify a custom dictionary (optional):
WITH DICT tbl_dict_name
Parâmetros
|
Parâmetro |
Descrição |
|
|
|
Nome da tabela. Deve ter de 1 a 127 caracteres (letras, dígitos ou sublinhados) e começar com letra ou sublinhado. Use o formato |
|
|
|
Nome da coluna. Deve ter de 1 a 127 caracteres (letras, dígitos ou sublinhados) e começar com letra ou sublinhado. |
|
|
|
Tipo de dados da coluna. Pelo menos uma coluna deve ser do tipo VARCHAR. Para tipos de dados compatíveis, consulte Tipos de dados básicos. |
|
|
|
Atributos da coluna. Para mais detalhes, consulte CREATE TABLE. |
|
|
|
Restrições da coluna. Para mais detalhes, consulte CREATE TABLE. |
|
|
|
Declara um índice full-text. |
|
|
|
KEY` |
Identificador de palavra-chave do índice. Aceita |
|
|
Nome do índice full-text. |
|
|
|
Analisador para tokenização. Se omitido, o sistema usa o analisador padrão. Para analisar os analisadores disponíveis, consulte Analisadores para índices full-text. |
|
|
|
Dicionário personalizado. Para mais informações, consulte Dicionários personalizados para índices full-text. |
Exemplo
Crie uma tabela chamada tbl_fulltext_name com um índice full-text na coluna content:
CREATE TABLE `tbl_fulltext_name` (
`id` int,
`content` varchar,
`keyword` varchar,
FULLTEXT INDEX fidx_c(`content`),
PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);
Verifique a criação do índice:
SHOW INDEX FROM tbl_fulltext_name;
Saída esperada:
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| 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 | | |
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
A entrada fidx_c com Index_type = FULLTEXT confirma a criação bem-sucedida do índice.
Adicionar um índice full-text a uma tabela existente
Sintaxe
ALTER TABLE `table_name` ADD FULLTEXT [INDEX|KEY] index_name (column_name) [index_option]
Exemplo
Siga estas etapas para adicionar um índice full-text a uma tabela existente e indexar dados históricos.
-
Crie uma tabela chamada
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'; -
Adicione um índice full-text chamado
fidx_kna colunakeywordcom o analisadorstandard:Se nenhum analisador for especificado, o sistema usará o padrão. Para consultar os analisadores disponíveis, veja Analisadores para índices full-text .
ALTER TABLE `tbl_fulltext_name` ADD FULLTEXT INDEX fidx_k(`keyword`) WITH ANALYZER standard; -
Compile o índice para os dados históricos existentes. Linhas gravadas antes da etapa 2 não estarão pesquisáveis até a conclusão dessa tarefa BUILD.
BUILD TABLE `tbl_fulltext_name` force=true;O tempo necessário depende do volume de dados na tabela.
Remover um índice full-text
Sintaxe
ALTER TABLE table_name DROP FULLTEXT INDEX index_name;
Exemplo
Remova o índice full-text fidx_k da tabela tbl_fulltext_name:
ALTER TABLE `tbl_fulltext_name` DROP FULLTEXT INDEX fidx_k;