Resumo da pesquisa de texto completo

Selecione uma versão da documentação:

A pesquisa de texto completo (FTS, na sigla em inglês) permite identificar documentos em linguagem natural que atendem a uma consulta. Essa abordagem é mais eficaz do que a correspondência de strings padrão porque considera nuances linguísticas, como ignorar palavras comuns como "o" e corresponder a diferentes formas de uma palavra, como "correr", "correndo" ou "correu".

O AlloyDB Omni é compatível com todos os recursos e funcionalidades de pesquisa de texto completo, incluindo suporte para índices GIN e GiST.

Para implementar a pesquisa de texto completo (FTS, na sigla em inglês) de maneira eficaz, é importante entender como o PostgreSQL processa e pesquisa textos. A unidade de pesquisa, um documento, geralmente é uma coluna de texto ou uma combinação de colunas de uma linha. O processo de criação de índice analisa esse documento para associar palavras (ou lexemas, a forma básica de uma palavra) à linha.

Esse processo envolve um pipeline de pré-processamento que transforma o texto bruto em um formato pesquisável:

  • Dividir o texto em tokens.
  • Remoção de palavras irrelevantes comuns.
  • Normalização de palavras para a forma raiz. Por exemplo, "correr" é o lexema de "correr", "corre", "correndo" e "correu".

O uso da pesquisa de texto completo também exige que você aprenda sobre tipos de dados especializados, operadores e várias estratégias de indexação, incluindo índices integrados do PostgreSQL e os índices RUM de alto desempenho.

O PostgreSQL usa dois tipos de dados principais e um operador de correspondência para gerenciar a FTS:

  • tsvector: representa um documento em um formato pesquisável, como uma lista classificada de lexemas distintos.
  • tsquery: representa termos de pesquisa, incluindo operadores booleanos que permitem combinar lexemas.
  • @@: verifica se um tsvector corresponde a um tsquery, permitindo pesquisas com reconhecimento linguístico.

O AlloyDB Omni é compatível com todos os tipos de índice para pesquisa de texto completo que o PostgreSQL integrado oferece. A escolha do índice depende do equilíbrio entre a velocidade de pesquisa, o tempo de criação do índice, a velocidade de atualização e as funcionalidades de pesquisa específicas necessárias, como pesquisa de frases ou classificação de relevância.

Para mais informações sobre como criar e usar índices RUM no AlloyDB Omni, consulte Criar e gerenciar um índice RUM no AlloyDB para PostgreSQL.

As implementações de pesquisa mais eficientes geralmente combinam a pesquisa de texto completo usando índices RUM e a pesquisa vetorial. Use a pesquisa híbrida para combinar os pontos fortes da compreensão semântica e da correspondência de palavra-chave exata, mesclando os conjuntos de resultados distintos para uma classificação abrangente.

Por exemplo, em um aplicativo de e-commerce, você pode usar primeiro a pesquisa de texto completo com RUM para encontrar produtos que contenham palavras-chave específicas, como "tênis de corrida", e usar a pesquisa vetorial para encontrar resultados com base na similaridade semântica com uma consulta mais detalhada do usuário, como "calçados confortáveis para treinamento de longa distância". Em seguida, o banco de dados combina os resultados classificados dos dois componentes de pesquisa em uma lista única e unificada usando o algoritmo Reciprocal Rank Fusion (RRF) para produzir uma classificação final.

A seguir