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

En esta página, se describe qué es la búsqueda en el texto completo y cómo funciona.

Una búsqueda de texto completo te permite crear una aplicación que puede buscar palabras, frases o números en una tabla, en lugar de solo buscar coincidencias exactas en campos estructurados. Las búsquedas en el texto completo devuelven los datos confirmados más recientes y coherentes a nivel transaccional para tu aplicación. Las capacidades de búsqueda de texto completo de Spanner también incluyen la corrección ortográfica, la automatización de la detección de idioma de la entrada de búsqueda y la clasificación de los resultados de la búsqueda. Spanner expande automáticamente las búsquedas de texto para incluir la coincidencia aproximada de palabras.

Debes crear un índice de búsqueda en las columnas que quieras que estén disponibles para las búsquedas de texto completo. Spanner analiza los datos de esas columnas para identificar palabras individuales que se agregarán al índice de búsqueda. Spanner actualiza el índice de búsqueda con datos nuevos o modificados tan pronto como se confirman en la base de datos.

  • Búsqueda de texto básica: Busca contenido usando toda o parte de una palabra o frase para recibir resultados confiables. Predicados de consulta de ejemplo:
    • Coincidencia con todas las palabras [terrier ratonero tricolor]
    • Palabras o frases exactas ["rat terrier"]
    • Cualquiera de estas palabras [miniature O standard]
    • Palabra cercana [copa AROUND(3) mundial]
    • Subcadena [start*]
  • Búsqueda numérica: Realiza búsquedas de igualdad y desigualdad numérica. Las búsquedas de igualdad coinciden con un número. Las búsquedas de rango y desigualdad coinciden con un número dentro de un rango específico.
  • Búsqueda basada en n-gramas: Coincide con palabras que tienen variaciones ortográficas, incluidos nombres propios. Este tipo de búsqueda también ayuda a hacer coincidir el texto de la búsqueda con nombres mal escritos, nombres con ortografía alternativa y texto con otras variaciones ortográficas.
  • Búsquedas de Soundex: Coinciden con palabras que suenan de forma similar.

Funciones de búsqueda en el texto completo

La búsqueda en el texto completo de Spanner tiene las siguientes características:

  • Resultados de la búsqueda clasificados: Calcula una puntuación para medir el nivel de coincidencia entre una búsqueda y un documento (por ejemplo, asignando un peso mayor a la columna_A). Usa expresiones SQL para personalizar el ranking.
  • Fragmentos: Destacan el texto coincidente en el resultado de la búsqueda.
  • Compatibilidad global: Admite automáticamente la tokenización en diferentes idiomas, incluida la segmentación de CJK. La especificación manual del idioma te permite realizar ajustes adicionales.
  • Gobernanza: Encuentra cada ocurrencia de palabras específicas.
  • Corrección ortográfica: Corrige automáticamente las palabras mal escritas en las búsquedas para que coincidan con la palabra escrita correctamente en el almacenamiento. Por ejemplo, si el usuario busca "girafe", la búsqueda encontrará documentos con "jirafa".
  • Adición de sinónimos contextuales, incluidas las palabras irrelevantes: Agrega automáticamente sinónimos pertinentes según el contexto para aumentar la recuperación. Por ejemplo, "la casa" coincide con "esta casa" y "foto de gato" coincide con "foto de gatito".
  • Traducción contextual de números entre texto y números: Coincide la versión textual de un número con su representación numérica y viceversa. Por ejemplo, "cinco gatos" coincide con "5 gatos".
  • Conversión automática de plurales: Coincide "gato" con "gatos".

Conceptos de la búsqueda en el texto completo

La búsqueda de texto completo tiene los siguientes conceptos clave:

  • Un documento hace referencia a los datos que se pueden buscar en una fila determinada.
  • Un token hace referencia a cada palabra de un documento que se almacena en un índice de búsqueda.
  • Un proceso de tokenización divide un documento en tokens.
  • Un tokenizador es una función de SQL que se usa para la tokenización.
  • Un índice invertido almacena tokens. Usar consultas de SQL para buscar en el índice invertido

Para comprender la búsqueda de texto completo, veamos una aplicación que usa una base de datos para almacenar canciones de cada cantante. Cada fila es una sola canción. Cada canción contiene columnas como título, letra, cantante y álbum. La aplicación usa la búsqueda de texto completo para permitir que un usuario busque una canción con consultas en lenguaje natural:

  • La búsqueda admite consultas que usan el operador OR, como Prince OR Camille. Las aplicaciones pueden introducir directamente la entrada del usuario final desde el cuadro de búsqueda en la función de SQL SEARCH (con la sintaxis de rquery). Para obtener más información, consulta Cómo consultar un índice de búsqueda.
  • Spanner usa índices de búsqueda para buscar documentos coincidentes en diferentes campos. Por ejemplo, una aplicación puede emitir una búsqueda para encontrar "cry" en el título, con "so cold" en la letra y "Prince" como cantante.

Otros usos de los índices de búsqueda

Los índices de búsqueda tienen una variedad de usos además de la búsqueda de texto completo, como los siguientes:

  • Indexación de elementos en columnas de array Considera una aplicación que usa una columna de array para almacenar etiquetas asociadas a un elemento. Con los índices de búsqueda, la aplicación puede buscar de manera eficiente las filas que contienen una etiqueta específica. Para obtener más información, consulta Tokenización de arrays.

  • Encontrar datos que se encuentran en la intersección de un conjunto de condiciones de búsqueda Por ejemplo, puedes usar un conjunto arbitrario de atributos (color, tamaño, marca, calificación, etcétera) para buscar un producto en un catálogo.

  • Usar condiciones de búsqueda numéricas, solas o en combinación con condiciones de texto completo Estos son algunos ejemplos de situaciones en las que un índice de búsqueda es útil para las búsquedas numéricas:

    • Cuando se combina con una aplicación de texto completo Por ejemplo, para encontrar un correo electrónico con el asunto Imagen y un tamaño superior a 1 MB.
    • Cuando forma parte de una intersección de condiciones descrita anteriormente Por ejemplo, para encontrar productos en los que color = "yellow" AND size = 14 AND rating >= 4.5.
    • Cuando se busca la intersección de columnas numéricas Por ejemplo, considera una tabla que almacena las horas de inicio y finalización de eventos. Los índices de búsqueda pueden implementar de manera eficiente una consulta que busque eventos que tuvieron lugar en un momento determinado: start_time <= @p AND end_time > @p.

    Para obtener más información, consulta Índices numéricos.

Pasos para realizar una búsqueda en el texto completo

En Spanner, la búsqueda en el texto completo requiere los siguientes pasos:

  1. Tokeniza un documento con las funciones de tokenización de Spanner, como TOKENIZE_SUBSTRING. Para obtener más información, consulta Tokenización.
  2. Crea un índice de búsqueda para contener los tokens con la declaración DDL CREATE SEARCH INDEX. Para obtener más información, consulta Índices de búsqueda.
  3. Consulta documentos en el índice de búsqueda con la función SEARCH de Spanner. Para obtener más información, consulta la Descripción general de las consultas.
  4. Clasifica los resultados de la búsqueda con la función SCORE de Spanner. Para obtener más información, consulta Cómo clasificar los resultados de la búsqueda.

Limitaciones

Precios

Spanner no aplica cargos adicionales cuando usas la búsqueda en el texto completo, aunque la implementación de esta función aumenta los costos debido a la necesidad de recursos adicionales de procesamiento y almacenamiento.

Para obtener más información, consulta Precios de Spanner.

¿Qué sigue?