Esta página descreve o que é a pesquisa de texto integral e como funciona.
Uma pesquisa de texto completo permite-lhe criar uma aplicação que pode pesquisar uma tabela para encontrar palavras, expressões ou números, em vez de apenas pesquisar correspondências exatas em campos estruturados. As pesquisas de texto completo devolvem os dados comprometidos transacionalmente consistentes mais recentes à sua aplicação. As capacidades de pesquisa de texto completo do Spanner também incluem a correção ortográfica, a automatização da deteção do idioma da entrada de pesquisa e a classificação dos resultados da pesquisa. O Spanner expande automaticamente as pesquisas de texto para incluir a correspondência aproximada de palavras.
Tem de criar um índice de pesquisa em todas as colunas que quer disponibilizar para pesquisas de texto completo. O Spanner analisa os dados nessas colunas para identificar palavras individuais a adicionar ao índice de pesquisa. O Spanner atualiza o índice de pesquisa com dados novos ou modificados assim que são confirmados na base de dados.
Tipos de pesquisa de texto completo
- Pesquisa de texto básica: pesquisa conteúdo usando a totalidade ou parte de uma palavra ou expressão para receber resultados fiáveis. Exemplos de predicados de consulta:
- Corresponde a todas as palavras [tricolor rat terrier]
- Palavras ou expressões exatas ["rat terrier"]
- Qualquer uma destas palavras [miniature OR standard]
- Palavra dentro de proximidade [world AROUND(3) cup]
- Substring [start*]
- Pesquisa numérica: executa pesquisas de igualdade e desigualdade numérica. As pesquisas de igualdade correspondem a um número. As pesquisas de intervalos e desigualdades correspondem a um número dentro de um intervalo específico.
- Pesquisa baseada em n-gramas: corresponde a palavras com variações ortográficas, incluindo nomes próprios. Este tipo de pesquisa também ajuda a fazer corresponder o texto da consulta a nomes com erros ortográficos, nomes com grafias alternativas e texto com outras variações ortográficas.
- Pesquisas Soundex: correspondem a palavras com sons semelhantes.
Funcionalidades de pesquisa de texto completo
A pesquisa de texto completo do Spanner tem as seguintes funcionalidades:
- Resultados da pesquisa classificados: calcula uma pontuação para avaliar a correspondência de uma consulta com um documento (por exemplo, atribuindo um peso maior a column_A). Use expressões SQL para personalizar a classificação.
- Fragmentos: realça o texto correspondente no resultado da pesquisa.
- Suporte global: suporta automaticamente a tokenização em diferentes idiomas, incluindo a segmentação CJK. A especificação manual do idioma permite-lhe fazer ajustes adicionais.
- Governança: encontra todas as ocorrências de palavras específicas.
- Correção ortográfica: corrige automaticamente palavras com erros ortográficos em consultas para corresponder à palavra com a ortografia correta no armazenamento. Por exemplo, se o utilizador pesquisar "girafe", a pesquisa encontra documentos com "girafa".
- Adição de sinónimos contextuais, incluindo palavras vazias: adiciona automaticamente sinónimos relevantes para o contexto para aumentar a capacidade de memorização. Por exemplo, "a casa" corresponde a "esta casa" e "foto de gato" corresponde a "foto de gatinho".
- Tradução contextual de números para texto e vice-versa: faz corresponder a versão textual de um número à representação numérica e vice-versa. Por exemplo, "cinco gatos" corresponde a "5 gatos".
- Conversão automática de plural: faz a correspondência entre "gato" e "gatos".
Conceitos de pesquisa de texto completo
A pesquisa de texto completo tem os seguintes conceitos-chave:
- Um documento refere-se aos dados pesquisáveis numa determinada linha.
- Um token refere-se a cada palavra de um documento que está armazenado num índice de pesquisa.
- Um processo de conversão em tokens divide um documento em tokens.
- Um tokenizador é uma função SQL usada para a tokenização.
- Um índice invertido armazena tokens. Use consultas SQL para pesquisar o índice invertido.
Exemplo de utilização da pesquisa de texto integral
Para compreender a pesquisa de texto integral, vamos analisar uma aplicação que usa uma base de dados para armazenar músicas de cada cantor. Cada linha é uma única música. Cada música contém colunas como título, letra, cantor e álbum. A aplicação usa a pesquisa de texto completo para permitir que um utilizador pesquise uma música através de consultas de linguagem natural:
- A pesquisa suporta consultas que usam o operador
OR
, comoPrince OR Camille
. As aplicações podem introduzir diretamente a entrada do utilizador final da caixa de pesquisa na função SQLSEARCH
(através da sintaxe rquery). Para mais informações, consulte o artigo Consultar um índice de pesquisa. - O Spanner usa índices de pesquisa para procurar documentos correspondentes em diferentes campos. Por exemplo, uma aplicação pode emitir uma consulta para pesquisar "cry" no título, com "so cold" na letra e "Prince" como cantor.
Outras utilizações dos índices de pesquisa
Os índices de pesquisa têm várias utilizações, além da pesquisa de texto completo, como as seguintes:
Indexação de elementos em colunas de matrizes. Considere uma aplicação que usa uma coluna de matriz para armazenar etiquetas associadas a um item. Com os índices de pesquisa, a aplicação pode procurar eficientemente linhas que contenham uma etiqueta específica. Para mais informações, consulte Tokenização de matrizes.
Encontrar dados que residem na interseção de um conjunto de condições de consulta. Por exemplo, pode usar um conjunto arbitrário de atributos (cor, tamanho, marca, classificação, etc.) para pesquisar um produto num catálogo.
Usando condições de pesquisa numéricas, isoladamente ou em combinação com condições de texto completo. Alguns exemplos de quando um índice de pesquisa é útil para pesquisas numéricas:
- Quando é combinado com uma aplicação de texto completo. Por exemplo, para encontrar um email com o assunto Imagem e um tamanho superior a 1 MB.
- Quando faz parte de uma interseção de condições descritas anteriormente.
Por exemplo, para encontrar produtos onde
color = "yellow" AND size = 14 AND rating >= 4.5
. - Quando pesquisar a interseção de colunas numéricas. Por exemplo, considere uma tabela que armazena as horas de início e de fim dos eventos. Os índices de pesquisa podem implementar de forma eficiente uma consulta que procura eventos que ocorreram num determinado momento:
start_time <= @p AND end_time > @p
.
Para mais informações, consulte o artigo Índices numéricos.
Passos da pesquisa de texto completo
No Spanner, a pesquisa de texto completo requer os seguintes passos:
- Tokenize um documento através das funções de tokenização do Spanner, como
TOKENIZE_SUBSTRING
. Para mais informações, consulte o artigo Tokenização. - Crie um índice de pesquisa para armazenar os tokens através da declaração DDL
CREATE SEARCH INDEX
. Para mais informações, consulte o artigo Índices de pesquisa. - Consulte documentos no índice de pesquisa através da função
SEARCH
do Spanner. Para mais informações, consulte a vista geral das consultas. - Classifique os resultados da consulta através da função Spanner
SCORE
. Para mais informações, consulte o artigo Classifique os resultados da pesquisa.
Limitações
- A pesquisa de texto completo não suporta Assured Workloads.
Preços
Não existem custos adicionais do Spanner quando usa a pesquisa de texto integral, embora a implementação da pesquisa de texto integral aumente os custos devido à necessidade de recursos de computação e armazenamento adicionais.
Para mais informações, consulte os preços do Spanner.
O que se segue?
- Saiba mais sobre a conversão em tokens e os tokenizadores do Spanner.
- Saiba mais sobre os índices de pesquisa.
- Saiba mais sobre as consultas de pesquisa de texto integral.