Visão geral da pesquisa de texto completo

Esta página descreve o que é a pesquisa de texto completo e como ela funciona.

Com uma pesquisa de texto completo, você pode criar um aplicativo que pesquisa uma tabela para encontrar palavras, frases ou números, em vez de apenas buscar correspondências exatas em campos estruturados. As pesquisas de texto completo retornam os dados mais recentes e consistentes da transação para o aplicativo. Os recursos de pesquisa de texto completo do Spanner também incluem correções de ortografia, detecção automática de idioma da entrada de pesquisa e classificação dos resultados da 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 em todas as colunas que você quer disponibilizar para pesquisas de texto completo. O Spanner analisa os dados nessas colunas para identificar palavras individuais a serem adicionadas ao índice de pesquisa. O Spanner atualiza o índice de pesquisa com dados novos ou modificados assim que ele é confirmado no banco de dados.

  • 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:
    • Corresponde a todas as palavras [tricolor rat terrier]
    • 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 de igualdade correspondem a um número. As pesquisas de intervalo e desigualdade correspondem a um número em um intervalo específico.
  • Pesquisa baseada em n-gramas: corresponde a palavras com variações ortográficas, incluindo substantivos 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 Soundex: 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). Use 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 do idioma permite que você faça 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 ortografia correta no armazenamento. Por exemplo, se o usuário pesquisar "girafa", a pesquisa vai encontrar documentos com "girafa".
  • Adição de sinônimos contextuais, incluindo palavras invariáveis: adiciona automaticamente sinônimos relevantes para aumentar a recuperação. Por exemplo, "a casa" corresponde a "esta casa", e "foto de gato" corresponde a "foto de gatinho".
  • Conversão de números contextuais para e de texto: corresponde à 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 do plural: corresponde "gato" a "gatos".

Conceitos de pesquisa de texto completo

A pesquisa de texto completo tem os seguintes conceitos principais:

  • Um documento se refere 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 tokenizer é uma função SQL usada para tokenização.
  • Um índice invertido armazena tokens. Use consultas SQL para pesquisar o índice invertido.

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 única música. Cada música contém colunas como título, letra, cantor e álbum. O aplicativo usa a pesquisa de texto completo para permitir que o usuário procure uma música usando consultas de linguagem natural:

  • A pesquisa oferece suporte a consultas que usam o operador OR, como Prince OR Camille. Os aplicativos podem alimentar diretamente a entrada do usuário final da caixa de pesquisa para a função SQL SEARCH (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 "chorar" na linha de assunto com "tão frio" na letra e "Prince" como o cantor.

Outros usos para índices de pesquisa

Os índices de pesquisa têm vários usos, além da pesquisa de texto completo, como os seguintes:

  • 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 índices de pesquisa, o app pode procurar de maneira eficiente linhas que contêm uma tag específica. Para mais informações, consulte Tokenização de matriz.

  • Encontrar dados que residem na interseção de um conjunto de 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 um e-mail com o assunto Picture e tamanho maior que 1 MB.
    • Quando faz parte de uma interseção de condições descritas 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:

  1. Tokenizar um documento usando as funções de tokenização do Spanner, como TOKENIZE_SUBSTRING. Para mais informações, consulte Tokenização.
  2. 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.
  3. Consultar documentos no índice de pesquisa usando a função SEARCH do Spanner. Para mais informações, consulte Visão geral da consulta.
  4. Classifique os resultados da consulta usando a função SCORE do Spanner. Para mais informações, consulte Classificar os resultados da pesquisa.

Limitações

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 Preços do Spanner.

A seguir