Todos os produtos
Search
Central de documentação

AnalyticDB:Dicionários personalizados para índices full-text

Última atualização: Jun 27, 2026

Os dicionários personalizados permitem controlar a segmentação de texto em índices full-text no AnalyticDB for MySQL. Use-os para manter termos específicos do domínio intactos (entidades) ou excluir palavras irrelevantes de alta frequência (stop words). O fluxo de trabalho envolve três etapas: criar uma tabela de dicionário, adicionar entradas e associar o dicionário a um índice full-text.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Permissões DDL e DML no dicionário personalizado (necessárias para criá-lo ou atualizá-lo)

  • Permissão SELECT no dicionário personalizado (necessária para usá-lo em consultas)

Visão geral

Um dicionário personalizado é uma tabela com duas colunas fixas: value (a palavra) e type (entidade ou stop word). Como funciona como uma tabela padrão, gerencie-o com as mesmas operações SQL: INSERT para adicionar palavras e DELETE para removê-las. As alterações entram em vigor imediatamente; todos os dados gravados posteriormente nas tabelas indexadas usam o dicionário atualizado na segmentação.

Dois tipos de palavra controlam o comportamento da tokenização:

  • main: marca um termo como entidade que o tokenizador não deve dividir. Use esta opção para termos específicos do domínio que a tokenização padrão fragmentaria, como nomes de locais e organizações em contextos gerais, ou marcas, produtos e modelos em cenários de e-commerce.

  • stop: marca um termo para exclusão do índice. Recomendado para palavras de alta frequência sem valor de busca, como from em cenários de log de auditoria SQL.

Importante

As stop words exigem o AnalyticDB for MySQL V3.1.4.24 ou posterior. Para verificar a versão do cluster, faça login no console do AnalyticDB for MySQL e acesse a seção Configuration Information na página Cluster Information. Para atualizar, consulte Atualizar a versão secundária de um cluster.

Limites

  • O sistema não oferece suporte a alterações DDL em dicionários personalizados.

  • Não há suporte para operações UPDATE e TRUNCATE em dicionários personalizados.

  • Use o dicionário personalizado obrigatoriamente com um índice full-text.

  • Exclua o dicionário personalizado associado antes de excluir um índice full-text.

  • Cada cluster suporta um dicionário personalizado por padrão. Entre em contato com o suporte técnico para criar dicionários adicionais.

  • Cada dicionário aceita até 10.000 entradas por padrão. Solicite ao suporte técnico o aumento desse limite, se necessário.

Criar um dicionário personalizado

Sintaxe

CREATE TABLE [IF NOT EXISTS] table_name (
  `value` VARCHAR NOT NULL COMMENT 'column_comment',
  `type` VARCHAR NOT NULL [DEFAULT 'main|stop' COMMENT 'column_comment'],
  PRIMARY KEY (`value`, `type`)
) COMMENT 'table_comment'
FULLTEXT_DICT = 'Y',
INDEX_ALL = 'Y|N'

Restrições

  • O dicionário personalizado pode conter apenas as colunas value e type.

  • Ambas as colunas são do tipo VARCHAR e não podem estar vazias.

  • A chave primária deve incluir value e type.

Parâmetros

Parâmetro

Descrição

table_name

Nome da tabela de dicionário. Deve ter de 1 a 127 caracteres e pode conter letras, dígitos e sublinhados (_). Deve começar com letra ou sublinhado.

value

Armazena a palavra. O nome da coluna é fixo: value.

type

Armazena o tipo da palavra. O nome da coluna é fixo: type. Valores válidos: main (padrão) para entidades; stop para stop words.

COMMENT

Comentário da coluna ou tabela.

FULLTEXT_DICT

Marca a tabela como tabela de dicionário. Defina como Y.

INDEX_ALL

Especifica as colunas indexadas. Y indexa todas as colunas; N indexa apenas a chave primária. Consulte a nota abaixo sobre os padrões específicos do mecanismo.

INDEX_ALL e mecanismos de tabela:

A configuração correta de INDEX_ALL depende do mecanismo de tabela do cluster:

  • Clusters anteriores à versão V3.2.2.0 usam o mecanismo XUANWU. O valor padrão de INDEX_ALL é Y. Mantenha o valor padrão.

  • Clusters V3.2.2.0 ou posteriores podem usar o XUANWU_V2. Execute a instrução a seguir para verificar:

    SHOW ADB_CONFIG KEY=RC_DDL_ENGINE_REWRITE_XUANWUV2;

    Se o resultado for true, o mecanismo padrão é XUANWU_V2 e INDEX_ALL assume o valor padrão N. Defina explicitamente INDEX_ALL = 'Y' ao criar tabelas de dicionário nesses clusters; caso contrário, a operação falhará. Se o resultado for false e você não definir explicitamente o mecanismo da tabela como XUANWU_V2, o mecanismo de tabela padrão será XUANWU.

Exemplo

Crie uma tabela de dicionário chamada tbl_dict_name:

CREATE TABLE tbl_dict_name (
  `value` VARCHAR NOT NULL COMMENT 'value of an entity or a stop word',
  `type` VARCHAR NOT NULL [DEFAULT 'main' COMMENT 'main: entity (not segmented); stop: excluded from index (V3.1.4.24+)'],
  PRIMARY KEY (`value`, `type`)
) COMMENT = 'your dictionary table'
FULLTEXT_DICT = 'Y',
INDEX_ALL = 'Y';

Atualizar um dicionário personalizado

As operações INSERT e DELETE entram em vigor imediatamente. Os dados gravados após a atualização usam as entradas mais recentes do dicionário na segmentação.

Exemplos

Adicione uma stop word:

INSERT INTO `tbl_dict_name` (`value`, `type`) VALUES ('and', 'stop');

Remova uma palavra:

DELETE FROM `tbl_dict_name` WHERE `value` = 'and' AND `type` = 'stop';

Usar um dicionário personalizado

Especifique o dicionário ao criar um índice full-text em uma instrução CREATE TABLE ou ALTER TABLE.

Sintaxe

FULLTEXT INDEX idx_name(`column_name`) [ WITH ANALYZER analyzer_name ] [ WITH DICT tbl_dict_name];

Parâmetros

Parâmetro

Descrição

idx_name

Nome do índice full-text.

column_name

Coluna na qual criar o índice full-text.

WITH ANALYZER analyzer_name

(Opcional) Analisador a ser usado. Para analisadores compatíveis, consulte Analisadores para índices full-text.

WITH DICT tbl_dict_name

Dicionário personalizado a aplicar.

Exemplo

Adicione um índice full-text na coluna content de tbl_fulltext_demo, usando o analisador AliNLP e o dicionário tbl_ext_dict:

ALTER TABLE `tbl_fulltext_demo`
ADD FULLTEXT INDEX fidx_c(`content`)
WITH ANALYZER alinlp
WITH DICT `tbl_ext_dict`;