Descripción general de la búsqueda en el texto completo

Selecciona una versión de la documentación:

La búsqueda en el texto completo (FTS) te permite identificar documentos en lenguaje natural que satisfacen una consulta. Este enfoque es más eficaz que la coincidencia de cadenas estándar, ya que tiene en cuenta los matices lingüísticos, como ignorar palabras comunes como "el" y hacer coincidir diferentes formas de una palabra, como "correr", "corriendo" o "corrió".

AlloyDB Omni admite todas las funciones y capacidades de búsqueda en el texto completo, incluida la compatibilidad con los índices GIN y GiST.

Para implementar de manera eficaz la búsqueda en el texto completo (FTS), debes comprender cómo PostgreSQL procesa y busca texto. La unidad de búsqueda, un documento, suele ser una columna de texto o una combinación de columnas de una fila. El proceso de compilación del índice analiza este documento para asociar palabras (o lexemas, la forma base de una palabra) con la fila.

Este proceso implica una canalización de procesamiento previo que transforma el texto sin procesar en un formato que se puede buscar de la siguiente manera:

  • Dividir el texto en tokens
  • Quitar las palabras irrelevantes comunes
  • Normalizar las palabras a su forma raíz; por ejemplo, "corr" es el lexema de "correr", "corre", "corriendo" y "corrió".

El uso de la búsqueda en el texto completo también requiere que aprendas sobre los tipos de datos especializados, los operadores y las diversas estrategias de indexación, incluidos los índices integrados de PostgreSQL y los índices RUM de alto rendimiento.

PostgreSQL usa dos tipos de datos principales y un operador de coincidencia para administrar la FTS:

  • tsvector: Representa un documento en un formato que se puede buscar, como una lista ordenada de lexemas distintos.
  • tsquery: Representa los términos de búsqueda, incluidos los operadores booleanos que te permiten combinar lexemas.
  • @@: Verifica si un tsvector coincide con un tsquery, lo que permite realizar búsquedas con reconocimiento lingüístico.

AlloyDB Omni admite todos los tipos de índices para la búsqueda en el texto completo que admite PostgreSQL integrado. La elección del índice depende del equilibrio entre la velocidad de búsqueda, el tiempo de compilación del índice, la velocidad de actualización y las funciones de búsqueda específicas que se requieren, como la búsqueda de frases o la clasificación por relevancia.

Para obtener más información sobre cómo crear y usar índices de RUM en AlloyDB Omni, consulta Crea y administra un índice de RUM en AlloyDB para PostgreSQL.

Las implementaciones de búsqueda más potentes suelen combinar la búsqueda en el texto completo con índices RUM y la búsqueda de vectores. Usa la búsqueda híbrida para combinar las fortalezas de la comprensión semántica y la concordancia exacta de palabras clave, lo que combina los distintos conjuntos de resultados para obtener una clasificación integral.

Por ejemplo, en una aplicación de comercio electrónico, primero podrías usar la búsqueda de texto completo con RUM para encontrar productos que contengan palabras clave específicas, como "calzado para correr", y usar la búsqueda de vectores para encontrar resultados basados en la similitud semántica con la consulta más detallada de un usuario, como "calzado cómodo para entrenamiento de larga distancia". Luego, la base de datos fusiona los resultados clasificados de ambos componentes de búsqueda en una lista única y unificada con el algoritmo de fusión por clasificación recíproca (RRF) para producir una clasificación final.

¿Qué sigue?