O AlloyDB Omni é compatível com todos os recursos e funcionalidades de pesquisa de texto completo, incluindo suporte para índices GIN e GiST.
Conceitos principais da pesquisa de texto completo
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 umtsvectorcorresponde a umtsquery, 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.
Combinar pesquisa semântica e de texto completo
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.