La búsqueda en el texto completo (FTS) en AlloyDB para PostgreSQL te permite identificar documentos en lenguaje natural que satisfacen una consulta. Este enfoque es más eficaz que la coincidencia de cadenas estándar porque tiene en cuenta los matices lingüísticos, como ignorar las palabras irrelevantes comunes como "el" y hacer coincidir diferentes formas de una palabra, como "correr", "corriendo" o "corrió".
Además de los índices GIN y GiST estándar de PostgreSQL, AlloyDB proporciona la extensión rum para la búsqueda en el texto completo de alto rendimiento en PostgreSQL 17 y versiones anteriores, y la clasificación de relevancia Best Matching 25 (BM25) en PostgreSQL 17 y versiones posteriores.
Conceptos básicos de la búsqueda en el texto completo
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 incluye una canalización de procesamiento previo que transforma el texto sin procesar en un formato que se puede buscar de la siguiente manera:
- Divide el texto en tokens.
- Quita las palabras irrelevantes comunes.
- Normaliza las palabras a su forma raíz; por ejemplo, "correr" 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 FTS:
tsvector: Representa un documento en un formato que se puede buscar, como una lista ordenada de lexemas distintos.tsquery: Representa términos de búsqueda, incluidos operadores booleanos que te permiten combinar lexemas.@@: Verifica si untsvectorcoincide con untsquery, lo que permite búsquedas con reconocimiento lingüístico.
AlloyDB 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 funcionalidades de búsqueda específicas requeridas, como la búsqueda de frases o la clasificación de relevancia.
Para optimizar la relevancia y la precisión de la búsqueda, también puedes elegir entre lo siguiente:
- Índice RUM: Mejora los índices GIN estándar almacenando información posicional directamente en el índice, lo que te permite realizar búsquedas de frases y clasificación de relevancia más rápidas sin acceder a los datos de la tabla. Esta extensión es compatible con PostgreSQL 17 o versiones anteriores. Para obtener más información, consulta Crea y administra un índice RUM.
- Índice BM25: Implementa el algoritmo probabilístico Best Matching 25 para clasificar documentos en función de la frecuencia de los términos y la saturación de la longitud, lo que ofrece una precisión de coincidencia de palabras clave estándar de la industria. Esta extensión es compatible con PostgreSQL 17 o versiones posteriores. Para obtener más información, consulta Crea y administra un índice BM25.
Combina la búsqueda en el texto completo y la búsqueda semántica
Las implementaciones de búsqueda más potentes suelen combinar la búsqueda de texto completo con índices RUM y Vector Search. Usa la búsqueda híbrida para combinar las ventajas de la comprensión semántica y la concordancia de palabras clave exacta, y combina los conjuntos de resultados distintos para obtener una clasificación integral.
Por ejemplo, en una aplicación de comercio electrónico, primero puedes usar la búsqueda en el texto completo con RUM para encontrar productos que contengan palabras clave específicas como "zapatillas 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 sola lista unificada con el algoritmo de fusión por clasificación recíproca (RRF) para producir una clasificación final.
Para obtener más información sobre el uso de este enfoque híbrido, consulta Ejecuta una búsqueda híbrida de similitud de vectores.
¿Qué sigue?
- Aprende a crear y administrar un índice RUM.
- Aprende a crear y administrar un índice BM25.
- Aprende a ejecutar una búsqueda híbrida de similitud de vectores.