Todos los productos
Search
Centro de documentos

:Custom dictionaries for full-text indexes

Última actualización: Sep 04, 2026

Los diccionarios personalizados le permiten controlar cómo segmenta el texto AnalyticDB for MySQL en los índices de texto completo. Utilícelos para mantener intactos los términos específicos del dominio (entidades) o para excluir palabras frecuentes sin valor semántico (stop words). El flujo de trabajo consta de tres pasos: crear una tabla de diccionario, agregar entradas y vincular el diccionario a un índice de texto completo.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Permisos DDL y DML sobre el diccionario personalizado (obligatorios para crearlo o actualizarlo).

  • Permiso SELECT sobre el diccionario personalizado (obligatorio para utilizarlo en consultas).

Descripción general

Un diccionario personalizado es una tabla con dos columnas fijas: value (la palabra) y type (entidad o stop word). Dado que se comporta como una tabla estándar, se gestiona mediante las mismas operaciones SQL: INSERT para agregar palabras y DELETE para eliminarlas. Los cambios surten efecto de inmediato; cualquier dato que se escriba posteriormente en las tablas indexadas se segmentará con el diccionario actualizado.

Dos tipos de palabra controlan el comportamiento de la tokenización:

  • main: marca un término como entidad que el tokenizer no debe dividir. Utilice este tipo para términos específicos del dominio que la tokenización estándar separaría incorrectamente, como nombres de lugares y organizaciones en contextos generales, o marcas, productos y modelos en escenarios de comercio electrónico.

  • stop: marca un término para excluirlo del índice. Utilice este tipo para palabras frecuentes que carecen de valor de búsqueda, como from en escenarios de registros de auditoría SQL.

Importante

Las stop words requieren AnalyticDB for MySQL V3.1.4.24 o posterior. Para comprobar la versión de su clúster, inicie sesión en la consola de AnalyticDB for MySQL y vaya a la sección Configuration Information de la página Cluster Information. Para actualizar la versión, consulte Actualizar la versión menor de un clúster.

Límites

  • No se admiten cambios DDL en los diccionarios personalizados.

  • No se admiten las operaciones UPDATE ni TRUNCATE en los diccionarios personalizados.

  • Un diccionario personalizado debe utilizarse junto con un índice de texto completo.

  • Elimine el diccionario personalizado asociado antes de eliminar un índice de texto completo.

  • Cada clúster admite un diccionario personalizado de forma predeterminada. Póngase en contacto con el soporte técnico para crear diccionarios adicionales.

  • Cada diccionario admite hasta 10,000 entradas de forma predeterminada. Póngase en contacto con el soporte técnico para aumentar este límite.

Crear un diccionario personalizado

Sintaxis

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'

Restricciones

  • Un diccionario personalizado solo puede contener las columnas value y type.

  • Ambas columnas son de tipo VARCHAR y no pueden estar vacías.

  • La clave primaria debe incluir tanto value como type.

Parámetros

Parámetro

Descripción

table_name

Nombre de la tabla del diccionario. Debe tener entre 1 y 127 caracteres y puede contener letras, dígitos y guiones bajos (_). Debe comenzar con una letra o un guion bajo.

value

Almacena la palabra. El nombre de la columna es fijo: value.

type

Almacena el tipo de palabra. El nombre de la columna es fijo: type. Valores válidos: main (predeterminado) para entidades; stop para stop words.

COMMENT

Comentario para la columna o la tabla.

FULLTEXT_DICT

Marca la tabla como tabla de diccionario. Establezca este valor en Y.

INDEX_ALL

Especifica qué columnas se indexan. Y indexa todas las columnas; N indexa solo la clave primaria. Consulte la nota a continuación para conocer los valores predeterminados según el motor.

INDEX_ALL y motores de tabla:

La configuración correcta de INDEX_ALL depende del motor de tabla de su clúster:

  • Los clústeres anteriores a la versión V3.2.2.0 utilizan el motor XUANWU. El valor predeterminado de INDEX_ALL es Y. Utilice el valor predeterminado.

  • Los clústeres V3.2.2.0 o posteriores pueden usar XUANWU_V2. Ejecute la siguiente sentencia para comprobarlo:

    SHOW ADB_CONFIG KEY=RC_DDL_ENGINE_REWRITE_XUANWUV2;

    Si el resultado es true, el motor predeterminado es XUANWU_V2 y el valor predeterminado de INDEX_ALL es N. Establezca explícitamente INDEX_ALL = 'Y' al crear tablas de diccionario en estos clústeres; de lo contrario, la operación fallará. Si el resultado es false y no establece explícitamente el motor de tabla en XUANWU_V2, el motor de tabla predeterminado será XUANWU.

Ejemplo

Cree una tabla de diccionario llamada 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';

Actualizar un diccionario personalizado

Las operaciones INSERT y DELETE surten efecto de inmediato. Los datos escritos después de la actualización se segmentan utilizando las entradas más recientes del diccionario.

Ejemplos

Agregar una stop word:

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

Eliminar una palabra:

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

Usar un diccionario personalizado

Especifique el diccionario al crear un índice de texto completo en una sentencia CREATE TABLE o ALTER TABLE.

Sintaxis

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

Parámetros

Parámetro

Descripción

idx_name

Nombre del índice de texto completo.

column_name

Columna sobre la cual se crea el índice de texto completo.

WITH ANALYZER analyzer_name

(Opcional) Analizador que se va a utilizar. Para consultar los analizadores compatibles, vea Analizadores para índices de texto completo.

WITH DICT tbl_dict_name

El diccionario personalizado que se va a aplicar.

Ejemplo

Agregue un índice de texto completo en la columna content de tbl_fulltext_demo, utilizando el analizador AliNLP y el diccionario tbl_ext_dict:

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