Todos os produtos
Search
Central de documentação

Tablestore:Tokenização

Última atualização: Aug 28, 2026

A tokenização divide o conteúdo de um campo Text em vários tokens com base no tipo de tokenizador definido. Configure esse tipo apenas para campos do tipo Text.

Informações básicas

Campos Text não suportam ordenação nem agregação. Para ordenar ou agregar dados desse campo, use uma coluna virtual do tipo Keyword.

Esses campos são comuns em consultas de correspondência (MatchQuery) e de frase correspondente (MatchPhraseQuery). Em cenários menos frequentes, também atendem a consultas de termo (TermQuery), termos (TermsQuery), prefixo (PrefixQuery) e curinga (WildcardQuery).

Tipos de tokenizador

O Tablestore oferece cinco tipos de tokenizador: palavra única, delimitador, semântico mínimo, semântico máximo e fuzzy. Por padrão, campos Text usam a tokenização por palavra única.

Todos os tipos de tokenizador são aplicáveis em cenários de consulta fuzzy.

A tabela a seguir compara esses cinco tipos em dimensões essenciais para ajudar na escolha da opção mais adequada ao seu cenário.

Item

Tokenização por palavra única

Tokenização por delimitador

Tokenização semântica mínima

Tokenização semântica máxima

Tokenização fuzzy

Expansão do índice

Pequena

Pequena

Pequena

Média

Grande

Impacto na relevância

Baixo

Baixo

Médio

Relativamente alto

Relativamente alto

Idiomas compatíveis

Todos

Todos

Chinês

Chinês

Todos

Limite de comprimento

Nenhum

Nenhum

Nenhum

Nenhum

1.024 caracteres

Taxa de recall

Alta

Baixa

Baixa

Média

Alta

As seções abaixo detalham cada tipo de tokenizador e seus parâmetros.

Tokenização por palavra única (SingleWord)

Este tipo aplica-se a todos os idiomas, incluindo chinês, inglês e japonês, sendo o tokenizador padrão para campos Text.

Ao definir a tokenização como palavra única, o processo funciona da seguinte forma:

  • Textos em chinês são divididos caractere por caractere. Os exemplos em chinês deste tópico estão romanizados em pinyin para manter os limites dos tokens visíveis. Por exemplo, o nome da cidade "hangzhou" (Hangzhou), composto por dois caracteres, é dividido em "hang" e "zhou". Uma consulta match ou match phrase por "hang" retorna linhas cujo conteúdo inclui "hangzhou".

  • Letras do alfabeto latino e dígitos são separados por espaços ou sinais de pontuação.

    • Se caseSensitive for falso, a tokenização ignora maiúsculas e minúsculas, e o Tablestore converte todas as letras para minúsculas antes do armazenamento. Assim, "Hang Zhou" torna-se "hang" e "zhou", e buscas por "hang", "HANG" ou "Hang" retornam essa linha.

    • Se caseSensitive for verdadeiro, a tokenização diferencia maiúsculas de minúsculas e preserva a formatação original das letras durante o armazenamento. Nesse caso, "Hang Zhou" gera os tokens "Hang" e "Zhou", e apenas consultas exatas por "Hang" ou "Zhou" retornam a linha.

  • Termos que combinam dígitos e letras, como números de modelo de product, também são separados por espaços ou pontuação. Contudo, por padrão, os dígitos e as letras dentro do mesmo termo permanecem juntos. Por exemplo, "iphone6" permanece como um único token. Consultas match ou match phrase só retornam resultados se você especificar o termo completo "iphone6"; buscar apenas "iphone" não traz nada. Para separar dígitos de letras, defina o parâmetro delimitWord como verdadeiro. Dessa forma, "iphone6" será dividido em "iphone" e "6", permitindo que buscas por qualquer uma das partes retornem a linha. A tabela a seguir descreve os parâmetros da tokenização por palavra única.

Parâmetro

Descrição

caseSensitive

Define se a tokenização diferencia maiúsculas de minúsculas. O valor padrão é falso, o que converte todas as letras para minúsculas. Para preservar a formatação original e impedir a conversão automática, defina caseSensitive como verdadeiro.

delimitWord

Determina se letras e dígitos devem ser separados quando aparecem juntos em um termo. O valor padrão é falso, mantendo-os unidos. Para dividi-los, defina delimitWord como verdadeiro. Nesse cenário, "iphone6" transforma-se em "iphone" e "6".

Tokenização por delimitador (Split)

Embora o Tablestore ofereça tokenização baseada em dicionário de uso geral, certas indústrias especializadas exigem dicionários personalizados. Para atender a essa necessidade, existe a tokenização por delimitador, também chamada de tokenização personalizada: você segmenta o conteúdo, une os tokens com um delimitador específico e grava o resultado no Tablestore.

Esse tipo de tokenizador é compatível com todos os idiomas, incluindo chinês, inglês e japonês.

Após configurar a tokenização por delimitador em um campo Text, o valor do campo será dividido sempre que o caractere especificado no parâmetro delimiter aparecer. Por exemplo, se o valor for "badminton,table tennis,rap" e o delimitador for uma vírgula (,), o sistema gera os tokens "badminton", "table tennis" e "rap", que serão indexados. Consultas match ou match phrase por "badminton", "table tennis", "rap" ou até "badminton,table tennis" retornam essa linha.

A tabela abaixo lista os parâmetros disponíveis para esse tipo de tokenização.

Parâmetro

Descrição

caseSensitive

Indica se a diferenciação entre maiúsculas e minúsculas está ativa. Por padrão (falso), todas as letras são convertidas para minúsculas. Se precisar manter a formatação original, defina caseSensitive como verdadeiro. Essa configuração requer o Tablestore Java SDK 5.17.2 ou superior.

delimiter

Caractere usado para separar os tokens. O padrão é o espaço em branco, mas você pode definir outro caractere personalizado. O delimitador nas configurações de tokenização do índice de busca deve ser idêntico ao usado durante a gravação dos dados; caso contrário, as consultas podem não retornar resultados. Se o delimitador for um caractere especial, como cerquilha (#) ou til (~), use a barra invertida \ como caractere de escape nas configurações. Por exemplo, use \# para representar a cerquilha.

Tokenização semântica mínima (MinWord)

Indicada para textos em chinês, essa modalidade é comum em cenários de busca full-text.

Ao optar pela tokenização semântica mínima, o sistema divide o conteúdo do campo Text na menor quantidade possível de tokens semânticos. Por exemplo, o termo de três caracteres "lihuacha" (chá de flor de pera) resulta em "li" e "huacha", sem sobreposição entre eles. Já o termo de sete caracteres "zhonghuarenmingongheguo" permanece intacto como um único token.

Tokenização semântica máxima (MaxWord)

Assim como a versão mínima, este tipo destina-se ao idioma chinês e a buscas full-text.

Nesta modalidade, o sistema extrai o maior número possível de tokens semânticos. Os tokens resultantes se sobrepõem, o comprimento acumulado supera o do texto original e o tamanho do índice aumenta. Por exemplo, "lihuacha" gera "lihua" e "huacha", com sobreposição em "hua". O termo longo "zhonghuarenmingongheguo" produz múltiplas variações: "zhonghuarenmingongheguo", "zhonghuarenmin", "zhonghua", "huaren", "renmingongheguo", "renmin", "gongheguo", "gonghe" e "guo".

Como essa abordagem gera mais tokens, a probabilidade de correspondência durante a consulta aumenta, mas o índice cresce significativamente. Ela é ideal para consultas match, não sendo recomendada para match phrase. Neste último caso, a palavra-chave da consulta sofre a mesma tokenização, causando sobreposição de posições que pode impedir a localização dos dados.

Tokenização fuzzy (Fuzzy)

Compatível com todos os idiomas (chinês, inglês, japonês, etc.), esta tokenização é ideal para textos curtos, como títulos, nomes de filmes, livros, arquivos e diretórios.

Ela oferece resultados com latência extremamente baixa e desempenho superior ao de consultas wildcard, embora cause alguma expansão no tamanho do índice.

Ao configurar a tokenização fuzzy, o sistema aplica a técnica de N-gram ao conteúdo textual e gera tokens com comprimento entre minChars e maxChars. Isso é particularmente útil para funcionalidades como sugestões em listas suspensas.

Para executar uma consulta fuzzy, use exclusivamente a consulta match phrase na coluna configurada com esse tokenizador; outros tipos de consulta não são suportados. Se precisar de múltiplos tipos de consulta na mesma coluna, recorra ao recurso de colunas virtuais. Para mais detalhes sobre colunas virtuais, consulte Virtual columns.

Limites

  • Em campos Text com tokenização fuzzy, o valor não pode ultrapassar 1.024 caracteres. Valores maiores serão truncados, descartando o excesso e mantendo apenas os primeiros 1.024 caracteres.

  • Para evitar crescimento excessivo do volume de dados indexados, a diferença entre os comprimentos máximo e mínimo dos tokens (maxChars-minChars) não deve exceder 15.

Parâmetros

Parâmetro

Descrição

minChars

Comprimento mínimo do token. Cada combinação de tokens deve ter uma quantidade de caracteres igual ou superior a este valor. O padrão é 1.

maxChars

Comprimento máximo do token. As combinações geradas não podem ter mais caracteres do que este valor. O padrão é 7.

caseSensitive

Controla a sensibilidade a maiúsculas e minúsculas. O valor padrão é falso, convertendo tudo para minúsculas. Para preservar a caixa original, altere para verdadeiro. Requer Tablestore Java SDK 5.17.2 ou posterior.

Exemplos

Os exemplos a seguir ilustram como cada tokenizador segmenta o conteúdo no momento da indexação e durante a consulta.

Na indexação, a string é dividida e seus fragmentos são indexados. Durante a consulta, a palavra-chave também passa por segmentação, e o sistema tenta correlacionar os tokens gerados com o índice existente. Todos os tokens nas tabelas abaixo estão romanizados em pinyin.

Considere o valor de campo "zhonghuarenmingongheguo-guoge" (uma frase chinesa unida por hífen e romanizada em pinyin). A tabela a seguir mostra os tokens gerados por cada tipo de tokenizador durante a indexação.

Tipo

Parâmetros

Tokens na indexação

Tokenização por palavra única (SingleWord)

Padrão

"zhong", "hua", "ren", "min", "gong", "he", "guo", "ge"

Tokenização por delimitador (Split)

delimiter: "-"

"zhonghuarenmingongheguo", "guoge"

Tokenização semântica mínima (MinWord)

Padrão

"zhonghuarenmingongheguo", "guoge"

Tokenização semântica máxima (MaxWord)

Padrão

"zhonghuarenmingongheguo", "zhonghuarenmin", "zhonghua", "huaren", "renmingongheguo", "renmin", "gongheguo", "gonghe", "guo", "guoge"

Tokenização fuzzy (Fuzzy)

minChars:1, maxChars:3

"zhong", "zhonghua", "zhonghuaren", "hua", "huaren", "huarenmin", "ren", "renmin", "renmingong", "min", "mingong", "mingonghe", "gong", "gonghe", "gongheguo", "he", "heguo", "guo", "guoge", "ge"

Para o mesmo valor "zhonghuarenmingongheguo-guoge", a tabela abaixo apresenta os tokens produzidos por cada tokenizador no momento da consulta.

Tipo

Parâmetros

Tokens na consulta

Tokenização por palavra única (SingleWord)

Padrão

"zhong", "hua", "ren", "min", "gong", "he", "guo", "ge"

Tokenização por delimitador (Split)

delimiter: "-"

"zhonghuarenmingongheguo", "guoge"

Tokenização semântica mínima (MinWord)

Padrão

"zhonghuarenmingongheguo", "guoge"

Tokenização semântica máxima (MaxWord)

Padrão

"zhonghuarenmingongheguo", "zhonghuarenmin", "zhonghua", "huaren", "renmingongheguo", "renmin", "gongheguo", "gonghe", "guo", "guoge"

Tokenização fuzzy (Fuzzy)

Padrão (minChars:1, maxChars:7)

"zhonghuarenmingongheguo", "guoge"