O AnalyticDB for MySQL oferece seis analisadores integrados para índices de texto completo: AliNLP, IK, Standard, Ngram, Edge_ngram e Pattern. Cada analisador utiliza uma estratégia de tokenização diferente. Escolha a opção mais adequada conforme seus requisitos de idioma, o padrão de busca (fuzzy, prefixo ou correspondência exata) e a necessidade de processamento de texto em chinês.
Escolha um analisador
|
Analisador |
Mais indicado para |
Suporte a idiomas |
Dicionário personalizado |
|
AliNLP |
Tokenização baseada em NLP para chinês e multilíngue |
Chinês, inglês, indonésio, malaio, tailandês, vietnamita, francês, espanhol |
Sim |
|
IK |
Texto em chinês com granularidade configurável |
Chinês |
Sim |
|
Standard |
Texto em inglês com filtragem de stop words |
Regras específicas por idioma |
Sim |
|
Ngram |
Busca fuzzy de substrings |
Qualquer |
Sim |
|
Edge_ngram |
Busca por prefixo e autocompletar |
Qualquer |
Sim |
|
Pattern |
Tokenização baseada em delimitadores personalizados via expressões regulares |
Qualquer |
Não |
Analisador padrão por versão do cluster:
Clusters anteriores à V3.1.4.15: analisador AliNLP
Clusters V3.1.4.15 ou posteriores: analisador IK
Para verificar a versão secundária do seu cluster, consulte Como visualizo a versão secundária de um cluster?
Especifique um analisador
Sintaxe
FULLTEXT INDEX idx_name(`column_name`) [ WITH ANALYZER analyzer_name ] [ WITH DICT tbl_dict_name];
Parâmetros
|
Parâmetro |
Descrição |
|
|
Nome do índice de texto completo. |
|
|
Nome da coluna a indexar. |
|
|
Analisador a utilizar. Omita este parâmetro para usar o analisador padrão. |
|
|
Dicionário personalizado a aplicar. Para mais detalhes, consulte Dicionários personalizados para índices de texto completo. |
Exemplo
A instrução a seguir cria uma tabela com seis índices de texto completo, um para cada analisador:
CREATE TABLE `tbl_fulltext_demo` (
`id` int,
`content` varchar,
`content_alinlp` varchar,
`content_ik` varchar,
`content_standard` varchar,
`content_ngram` varchar,
`content_edge_ngram` varchar,
FULLTEXT INDEX fidx_c(`content`), -- Default analyzer
FULLTEXT INDEX fidx_alinlp(`content_alinlp`) WITH ANALYZER alinlp,
FULLTEXT INDEX fidx_ik(`content_ik`) WITH ANALYZER ik,
FULLTEXT INDEX fidx_standard(`content_standard`) WITH ANALYZER standard,
FULLTEXT INDEX fidx_ngram(`content_ngram`) WITH ANALYZER ngram,
FULLTEXT INDEX fidx_edge_ngram(`content_edge_ngram`) WITH ANALYZER edge_ngram,
PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);
Visualize os resultados da tokenização
Antes de definir um analisador, teste como ele tokeniza seu texto. Cada analisador possui uma função de teste dedicada que retorna a lista de tokens para uma string de entrada específica.
Adicione o prefixo /*+ mode=two_phase*/ a todas as consultas de teste de tokenização; caso contrário, elas não serão executadas corretamente.
Os exemplos a seguir usam a mesma entrada — 'Hello world' — em todos os analisadores para permitir a comparação direta das saídas:
|
Analisador |
Função de teste |
**Saída para |
|
AliNLP |
|
|
|
IK |
|
|
|
Standard |
|
|
|
Ngram (tamanho padrão do token: 2) |
|
|
|
Edge_ngram (mín: 1, máx: 2) |
|
|
Uso:
/*+ mode=two_phase*/ SELECT fulltext_ik_test('Hello world');
[hello, world, or]
O analisador Pattern não suporta testes de tokenização baseados em SQL.
Analisador AliNLP
Ideal para textos em chinês e multilíngues. A Alibaba Cloud e a DAMO Academy desenvolveram o analisador AliNLP com tecnologia de processamento de linguagem natural (NLP). Ele segmenta textos consecutivos de linguagem natural em partes significativas e aceita dicionários personalizados para entidades definidas pelo usuário e stop words.
Idiomas suportados: Chinês, inglês, indonésio, malaio, tailandês, vietnamita, francês, espanhol
-
Resultado da tokenização para texto em inglês:
/*+ mode=two_phase*/ SELECT fulltext_alinlp_test('Hello world');Resultado:
[hello, , world]
Os exemplos a seguir mostram os resultados da tokenização com as configurações padrão:
Parâmetros de configuração
| Parâmetro | Descrição | Padrão |
|---|---|---|
FULLTEXT_SPLIT_GRANULARITY |
Granularidade da segmentação. Número inteiro de 2 a 8. | 2 |
FULLTEXT_FILTER_ST_CONVERT_ENABLED |
Ativa a conversão de radicais (ex.: men → man, cars → car). |
false |
FULLTEXT_TOKENIZER_CASE_SENSITIVE |
Define se a tokenização diferencia maiúsculas de minúsculas. | false |
Analisador IK
Recomendado para textos em chinês. O analisador IK é uma solução open-source e leve para o idioma chinês. Ele suporta dois modos de segmentação — granulação grossa e granulação fina — e aceita dicionários personalizados para entidades e stop words.
-
Resultado da tokenização para texto em inglês:
/*+ mode=two_phase*/ SELECT fulltext_ik_test('Hello world');Resultado:
[hello, world, or]
Os exemplos a seguir mostram os resultados da tokenização com as configurações padrão:
Parâmetros de configuração
|
Parâmetro |
Descrição |
Padrão |
|
|
Modo de segmentação. |
|
|
|
Comprimento mínimo do segmento. Número inteiro de 2 a 16. |
|
|
|
Comprimento máximo do segmento. Número inteiro de 2 a 256. |
|
Analisador Standard
Indicado para texto em inglês. O analisador Standard aplica regras específicas do idioma: para inglês, converte o texto para minúsculas e remove stop words e pontuação antes da tokenização; para chinês, divide o texto em caracteres individuais. Este analisador suporta dicionários personalizados.
-
Resultado da tokenização para texto em inglês:
/*+ mode=two_phase*/ SELECT fulltext_standard_test('Hello world');Resultado:
[hello, world]
Os exemplos a seguir mostram os resultados da tokenização com as configurações padrão:
Parâmetros de configuração
|
Parâmetro |
Descrição |
Padrão |
|
|
Comprimento máximo do token. Número inteiro de 1 a 1.048.576. |
|
Analisador Ngram
Ideal para busca fuzzy de substrings. O analisador Ngram divide o texto em todas as substrings possíveis de comprimento fixo, o que o torna eficaz para consultas de correspondência parcial. Ele suporta dicionários personalizados.
-
Resultado da tokenização para texto em inglês:
/*+ mode=two_phase*/ SELECT fulltext_ngram_test('Hello world');Resultado:
[he, el, ll, lo, o , w, wo, or, rl, ld]
Os exemplos a seguir mostram os resultados da tokenização com as configurações padrão:
Parâmetros de configuração
|
Parâmetro |
Descrição |
Padrão |
|
|
Comprimento do token. Número inteiro de 1 a 8. |
|
Analisador Edge_ngram
Indicado para busca por prefixo e autocompletar (busca enquanto digita). O analisador Edge_ngram gera tokens de prefixo com comprimento crescente — por exemplo, h, depois he — sendo ideal para corresponder palavras desde o início. Ele suporta dicionários personalizados.
Dica: O Edge_ngram funciona bem quando o termo de busca aparece no início das palavras. Para correspondência fuzzy de substrings em qualquer parte do texto, utilize o analisador Ngram.
-
Resultado da tokenização para texto em inglês:
/*+ mode=two_phase*/ SELECT fulltext_edge_ngram_test('Hello world');Resultado:
[h, he]
Os exemplos a seguir mostram os resultados da tokenização com as configurações padrão:
Parâmetros de configuração
|
Parâmetro |
Descrição |
Padrão |
|
|
Comprimento mínimo do prefixo. Número inteiro de 1 a 8. |
|
|
|
Comprimento máximo do prefixo. Número inteiro de 1 a 16. Deve ser maior que |
|
Analisador Pattern
Indicado para delimitadores personalizados. O analisador Pattern tokeniza o texto dividindo-o com base em um padrão de expressão regular definido por você. Ele não suporta dicionários personalizados nem testes de tokenização via SQL.
Sintaxe
FULLTEXT INDEX fidx_name(`column_name`) WITH ANALYZER pattern_tokenizer("Custom_rule") [ WITH DICT `tbl_dict_name` ];
Custom_rule é a expressão regular que define o padrão de divisão.
Parâmetros de configuração
|
Parâmetro |
Descrição |
Padrão |
|
|
Define se a tokenização diferencia maiúsculas de minúsculas. |
|
Gerencie a configuração do analisador
Consulte os parâmetros de configuração
Utilize um dos métodos abaixo para verificar o valor atual de um parâmetro de configuração.
Método 1: SHOW adb_config
Retorna tanto os valores padrão quanto os modificados.
show adb_config key = '<analyzer_param>';
Exemplo:
show adb_config key = 'FULLTEXT_NGRAM_TOKEN_SIZE';
Método 2: SELECT no INFORMATION_SCHEMA
Retorna apenas os valores modificados. Se um parâmetro nunca tiver sido alterado em relação ao padrão, esta consulta retornará null.
SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = '<analyzer_param>';
Exemplo:
SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = 'FULLTEXT_NGRAM_TOKEN_SIZE';
Modifique os parâmetros de configuração
set adb_config <analyzer_param>=<value>;
Exemplo:
set adb_config FULLTEXT_NGRAM_TOKEN_SIZE=3;