Os índices de pesquisa oferecem suporte a três tipos de dados relacionados a strings: Keyword, FuzzyKeyword e Text. Selecione o tipo apropriado com base nos seus requisitos de consulta.
Contexto
Nas tabelas de dados do Tablestore, o tipo primário de string é String — equivalente ao tipo string em C++ e Java. Os índices de pesquisa subdividem esse único tipo em três variantes especializadas para oferecer suporte a diferentes padrões de consulta:
|
Tipo |
Mais indicado para |
|
Keyword |
Correspondência exata, consultas de intervalo, classificação e agregação |
|
FuzzyKeyword |
Consultas com curinga, prefixo e sufixo de alto desempenho em qualquer tamanho de conjunto de dados |
|
Text |
Pesquisa de texto completo com tokenização e pontuação de relevância |
Mapeamentos de tipos de dados
O tipo String nas tabelas de dados mapeia diretamente para Keyword, FuzzyKeyword ou Text nos índices de pesquisa. Com o recurso de coluna virtual, você também pode mapear os tipos Integer ou Double para qualquer um desses três tipos de string.
|
Tipo de dados nas tabelas |
Método |
Tipo de dados nos índices de pesquisa |
|
String |
Uso direto |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Integer |
Coluna virtual |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Double |
Coluna virtual |
Keyword |
|
FuzzyKeyword |
||
|
Text |
Tipos de dados
Keyword
O tipo Keyword trata uma string como um valor único e indivisível, funcionando da mesma forma que campos de string em bancos de dados relacionais. Ele oferece suporte a consultas de termo, termos, intervalo, curinga, prefixo e existência (consulta de valor nulo), além de classificação e agregação estatística (incluindo GroupBy).
Bons candidatos para Keyword: IDs de usuário, códigos de status, endereços de e-mail, códigos de país e qualquer campo onde você consulte valores exatos ou execute agregações.
Em conjuntos de dados com mais de um milhão de entradas, o desempenho das consultas com curinga e prefixo diminui conforme o volume cresce. Utilize FuzzyKeyword se for necessária correspondência difusa de alto desempenho em escala.
Text
O tipo Text foi projetado para pesquisa de texto completo. Antes da indexação, o sistema divide a string em tokens usando o método de tokenização configurado e, em seguida, indexa cada token individualmente. No momento da consulta, a string de busca passa pelo mesmo processo de tokenização antes de ser comparada com o índice.
Como o Text indexa tokens em vez do valor original, ele oferece suporte a pontuação de relevância, destaque e resumo de resultados, consulta de correspondência e consulta de frase correspondente. Não há suporte para consultas exatas de termo, classificação ou agregação.
Casos ideais para Text: descrições de produtos, conteúdo de artigos, avaliações de usuários e qualquer campo onde se busquem palavras ou frases dentro de uma string mais longa.
Para métodos de tokenização disponíveis, consulte Tokenização.
FuzzyKeyword
O FuzzyKeyword é otimizado para consultas com curinga, prefixo e sufixo. Ele pré-armazena substrings de cada valor de campo no índice, permitindo que as consultas examinem uma estrutura de índice compacta em vez de varrer os valores linha por linha. O desempenho das consultas com curinga e prefixo permanece consistentemente rápido, independentemente do tamanho do conjunto de dados.
Recomendado para FuzzyKeyword: mensagens de log, caminhos de arquivo, SKUs de produtos e qualquer campo onde os usuários digitem strings parciais para pesquisar.
Para consultas de sufixo, utilize SuffixQuery com o tipo FuzzyKeyword. Uma alternativa — inverter os dados e executar PrefixQuery em um campo Keyword — está disponível, mas apresenta desempenho inferior.
Campos FuzzyKeyword não suportam classificação ou agregação estatística. Para classificar ou agregar um campo FuzzyKeyword, utilize o recurso de coluna virtual para mapeá-lo para um tipo Keyword.
Caso um campo exija múltiplos recursos de consulta, como consulta de termo, consulta difusa de alto desempenho e pesquisa de texto completo, use o recurso de coluna virtual para mapear uma coluna da tabela para três colunas de índice de pesquisa dos tipos Keyword, Text e FuzzyKeyword, respectivamente. Para mais informações, consulte Colunas virtuais.
Comparação de tipos
Os três tipos de string diferem quanto aos recursos de consulta suportados e aos comprimentos máximos de campo.
Uma marca de verificação (✓) indica que o recurso é suportado. Uma marca de cruz (×) indica que o recurso não é suportado.
|
Recurso |
Keyword |
FuzzyKeyword |
Text |
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
✓ |
✓ |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
× |
× |
✓ |
|
|
Pesquisa de texto completo: Pontuação de relevância |
× |
× |
✓ |
|
Pesquisa de texto completo: Destaque e resumo |
× |
× |
✓ |
|
× |
× |
✓ |
|
|
Pesquisa de texto completo: Consulta de frase correspondente |
× |
× |
✓ |
|
✓ (Desempenho inferior em grandes conjuntos de dados) |
✓ (Alto desempenho) |
× |
|
|
✓ (Desempenho inferior em grandes conjuntos de dados) |
✓ (Alto desempenho) |
× |
|
|
Consulta de sufixo |
× |
✓ |
× |
|
Comprimento máximo |
4 KB |
2 KB |
2 MB |