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ê cria um aplicativo que pode pesquisar uma tabela para encontrar palavras, frases ou números, em vez de apenas correspondências exatas em campos estruturados. As pesquisas de texto completo retornam os dados confirmados mais recentes e consistentes do ponto de vista transacional para seu aplicativo. Os recursos de pesquisa de texto completo do Spanner também incluem correção ortográfica, automação da detecção de idioma da entrada de pesquisa e classificação dos resultados da pesquisa. O Spanner expande automaticamente as pesquisas de texto para incluir a correspondência aproximada de palavras.

É 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 e adicioná-las ao índice de pesquisa. O Spanner atualiza o índice de pesquisa com dados novos ou modificados assim que eles são confirmados 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 [rat terrier tricolor]
    • Palavras ou frases exatas ["rat terrier"]
    • Qualquer uma destas palavras [miniature OR standard]
    • Palavra em proximidade [copa DO(3) mundo]
    • Substring [start*]
  • Pesquisa numérica: realiza pesquisas de igualdade e desigualdade numérica. As pesquisas de igualdade correspondem a um número. As pesquisas de intervalo e desigualdade 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 substantivos próprios e nomes. Esse tipo de pesquisa também ajuda a corresponder o texto da consulta com nomes escritos incorretamente, nomes com grafias alternativas e texto com outras variações ortográficas.
  • Pesquisas Soundex: correspondem a palavras com sons semelhantes.

Recursos de pesquisa de texto completo

A pesquisa de texto completo do Spanner tem os seguintes recursos:

  • Resultados da pesquisa classificados: calcula uma pontuação para avaliar a correspondência entre uma consulta e um documento (por exemplo, atribuindo um peso maior a "column_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 fazer ajustes mais precisos.
  • 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 "girafe", a pesquisa vai encontrar documentos com "giraffe".
  • Adição de sinônimos contextuais, incluindo palavras de parada: adiciona automaticamente sinônimos contextualmente relevantes para aumentar o recall. 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: 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 para o plural: corresponde a "gato" e "gatos".

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

  • A pesquisa é compatível com consultas que usam o operador OR, como Prince OR Camille. Os aplicativos podem inserir diretamente a entrada do usuário final da caixa de pesquisa na função SQL SEARCH (usando a sintaxe rquery). Para mais informações, consulte Consultar um índice de pesquisa.
  • O Spanner usa índices de pesquisa para procurar documentos correspondentes em diferentes campos. Por exemplo, um aplicativo pode emitir uma consulta para pesquisar "cry" no título, com "so cold" 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 matriz. Considere um aplicativo que usa uma coluna de matriz para armazenar tags associadas a um item. Com os índices de pesquisa, o aplicativo pode pesquisar com eficiência linhas que contêm uma tag específica. Para mais informações, consulte Tokenização de matriz.

  • Encontrar dados que estão 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érica, sozinhas 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 um aplicativo de texto completo. Por exemplo, para encontrar um e-mail com o assunto Imagem 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 horários de início e término de eventos. Os índices de pesquisa podem implementar com eficiência 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 exige as seguintes etapas:

  1. Tokenize 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. Consulte documentos no índice de pesquisa usando a função SEARCH do Spanner. Para mais informações, consulte Visão geral das consultas.
  4. Classifique os resultados da consulta usando a função SCORE do Spanner. Para mais informações, consulte Classificar resultados da pesquisa.

Limitações

Preços

Não há cobranças extras do Spanner ao usar a pesquisa de texto completo, mas a implementação dela aumenta os custos devido à necessidade de mais recursos de computação e armazenamento.

Para mais informações, consulte os preços do Spanner.

A seguir