Esta página descreve o que é a pesquisa de texto completo e como ela funciona.
Visão geral
Uma pesquisa de texto completo permite criar um aplicativo que pode pesquisar uma tabela para encontrar palavras, frases ou números, em vez de apenas pesquisar correspondências exatas em campos estruturados. Pesquisas de texto completo retornam o mais recente dados confirmados de consistência transacional em seu aplicativo. Spanner. os recursos de pesquisa de texto completo também incluem fazer correções ortográficas, automatização da detecção de idioma de entrada de pesquisa e classificação dos resultados de pesquisa. A ferramenta Spanner expande automaticamente as pesquisas de texto para incluir a correspondência de palavras aproximadas.
É necessário criar um índice de pesquisa nas colunas que você quer disponibilizar. para pesquisas de texto completo. O Spanner analisa nessas colunas para identificar palavras individuais que serão adicionadas ao índice de pesquisa. O Spanner atualiza o índice de pesquisa com dados novos ou modificados assim que ele será confirmado no banco de dados.
Tipos de pesquisa de texto completo
- Pesquisa de texto básica: pesquisa conteúdo usando toda ou parte de uma
palavra ou frase para receber resultados confiáveis. Exemplos de predicados de consulta:
- Correspondência de todas as palavras [rat terrier tricolor]
- Palavras ou frases exatas ["rat terrier"]
- Qualquer uma destas palavras [miniatura OU padrão]
- Palavra em proximidade [world AROUND(3) cup]
- Substring [start*]
- Pesquisa numérica: realiza pesquisas numéricas de igualdade e desigualdade. As pesquisas com igualdade correspondem a um número. Correspondências de pesquisas de intervalo e desigualdade um número em um intervalo específico.
- Pesquisa com base em n-grama: faz a correspondência de palavras com variações ortográficas, incluindo: nomes próprios e nomes próprios. Esse tipo de pesquisa também ajuda a corresponder o texto da consulta a nomes com erros ortográficos, nomes com grafias alternativas e texto com outras variações de ortografia.
- Pesquisas com código de som: corresponde a palavras com sons semelhantes.
Recursos de pesquisa de texto completo
A pesquisa de texto completo do Spanner tem os seguintes recursos:
- Resultados de pesquisa classificados: calcula uma pontuação para avaliar a correspondência entre uma consulta e um documento (por exemplo, atribuindo um peso maior para a coluna_A). Usar Expressões SQL para personalizar a classificação.
- Snippets: destaca o texto correspondente no resultado da pesquisa.
- Suporte global: oferece suporte automático à tokenização em diferentes idiomas, incluindo a segmentação CJK. A especificação manual da linguagem permite realizar ajustes.
- 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 ortografia correta no armazenamento. Por exemplo, se o o usuário pesquisar por "girafe", a pesquisa encontrará documentos com "girafe".
- Adição de sinônimos contextuais, incluindo palavras irrelevantes: adiciona automaticamente sinônimos relevantes contextualmente para aumentar o recall. Por exemplo, "a casa" corresponde a "esta casa", e "foto de gato" corresponde a "foto de gatinho".
- Tradução de números contextuais para e a partir do texto: faz a correspondência entre o texto versão de um número para a representação numérica e vice-versa. Para por exemplo, "cinco gatos" corresponde a "5 cats".
- Conversão automática do plural: corresponde "gato" a "gatos".
Conceitos da pesquisa de texto completo
A pesquisa de texto completo tem os seguintes conceitos principais:
- Um documento refere-se aos dados pesquisáveis em uma determinada linha.
- Um token se refere a cada palavra de um documento armazenado em um índice de pesquisa.
- Um processo de tokenização divide um documento em tokens.
- Um tokenizador é uma função SQL usada para tokenização.
- Um índice invertido armazena tokens. Use consultas SQL para pesquisar índice invertido.
Exemplo de caso de uso para pesquisa de texto completo
Para entender a pesquisa de texto completo, vamos analisar um aplicativo que usa um banco de dados para armazenar músicas de cada cantor. Cada linha é uma música. Cada música contém colunas como título, letra, cantora e álbum. O aplicativo usa a pesquisa de texto completo para permitir que o usuário pesquise uma música usando consultas de linguagem natural:
- A pesquisa oferece suporte a consultas que usam o operador
OR
, comoPrince OR Camille
. Os aplicativos podem alimentar diretamente a entrada do usuário final da caixa de pesquisa para a função SQLSEARCH
(usando a sintaxe de consulta). - O Spanner usa índices de pesquisa para procurar documentos correspondentes em diferentes campos. Por exemplo, um aplicativo pode emitir uma consulta para pesquisar "cry" na linha de assunto com "so cold" na letra e "Prince" como o cantor.
Outros usos para índices de pesquisa
Os índices de pesquisa têm uma variedade de usos além da pesquisa de texto completo, como o seguinte:
Indexação de elementos em colunas de matrizes. Considere um aplicativo que usa uma coluna de matriz para armazenar tags associadas a um item. Com os índices de pesquisa, a aplicativo possa procurar com eficiência linhas que contenham uma tag específica. Para mais informações, consulte Tokenização da matriz.
Encontrar dados que residem na interseção de um conjunto das condições de consulta. Por exemplo, é possível usar um conjunto arbitrário de atributos (cor, tamanho, marca, classificação etc.) para pesquisar um produto em um catálogo.
Usar condições de pesquisa numéricas, sozinhas ou em combinação com condições de texto completo. Confira alguns exemplos de quando um índice de pesquisa é útil para pesquisas numéricas:
- Quando combinado com um aplicativo de texto completo. Por exemplo, para encontrar e-mail com o assunto Imagem e tamanho maior que 1 MB.
- Quando faz parte de uma interseção de condições descrita anteriormente.
Por exemplo, para encontrar produtos em que
color = "yellow" AND size = 14 AND rating >= 4.5
. - Ao pesquisar a interseção de colunas numéricas. Por
exemplo, considere uma tabela que armazena os horários de início e término do evento. Os índices de pesquisa
podem implementar de maneira eficiente uma consulta que procura eventos que
ocorreram em um determinado momento:
start_time <= @p AND end_time > @p
.
Para mais informações, consulte Índices numéricos.
Etapas da pesquisa de texto completo
No Spanner, a pesquisa de texto completo requer as seguintes etapas:
- Tokenize um documento usando as funções de tokenização do Spanner,
como
TOKENIZE_SUBSTRING
. Para mais informações, consulte Tokenização. - Crie um índice de pesquisa para armazenar os tokens usando a
instrução DDL
CREATE SEARCH INDEX
. Para mais informações, consulte Índices de pesquisa. - Consultar documentos no índice de pesquisa usando a função
SEARCH
do Spanner. Para mais informações, consulte Visão geral da consulta. - Classifique os resultados da consulta usando a função
SCORE
do Spanner. Para mais informações, consulte Classificar os resultados da pesquisa.
Limitações
- A pesquisa de texto completo não oferece suporte ao Assured Workloads.
Preços
Não há cobranças extras do Spanner quando você usa a pesquisa de texto completo, embora a implementação dela aumente os custos devido à necessidade de recursos de computação e armazenamento adicionais.
Para mais informações, consulte os preços do Spanner.
A seguir
- Saiba mais sobre tokenização e tokenizadores do Spanner.
- Saiba mais sobre índices de pesquisa.
- Saiba mais sobre consultas de pesquisa de texto completo.