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 compilar una aplicación que puede buscar en una tabla para encontrar palabras, frases o números, en lugar de solo buscar coincidencias exactas en campos estructurados. Las búsquedas de texto completo muestran los datos confirmados más recientes que son coherentes a nivel de las transacciones a 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 concordancia aproximada de palabras.

Debes crear un índice de búsqueda en las columnas que deseas 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 apenas se confirman en la base de datos.

  • Búsqueda de texto básica: Busca contenido con una palabra o frase completa o parcial para recibir resultados confiables. Predicados de consulta de ejemplo:
    • Coincidencia con todas las palabras [tricolor rat terrier]
    • Palabras o frases exactas ["rat terrier"]
    • Cualquiera de estas palabras [miniatura O estándar]
    • Palabra cercana [world AROUND(3) cup]
    • Subcadena [inicio*]
  • Búsqueda numérica: Realiza búsquedas de igualdad y desigualdad numéricas. 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 con variaciones ortográficas, incluidos nombres y sustantivos propios. Este tipo de búsqueda también ayuda a hacer coincidir el texto de la consulta con nombres con errores ortográficos, nombres con ortografías alternativas y texto con otras variaciones ortográficas.
  • Búsquedas de Soundex: Muestra coincidencias con palabras que suenan de manera similar.

Funciones de búsqueda en el texto completo

La búsqueda de texto completo de Spanner tiene las siguientes funciones:

  • Resultados de la búsqueda clasificados: Calcula una puntuación para medir el nivel de coincidencia de una consulta con un documento (por ejemplo, otorga un mayor peso a columna_A). Usa expresiones SQL para personalizar el ranking.
  • Fragmentos: Destaca 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 con errores ortográficos en las búsquedas para que coincidan con la palabra con la ortografía correcta en el almacenamiento. Por ejemplo, si el usuario busca "jirafa", la búsqueda encuentra documentos con "jirafa".
  • Adición de sinónimos contextuales, incluidas las palabras de parada: Agrega automáticamente sinónimos relevantes contextualmente para aumentar la recuperación. Por ejemplo, "la casa" coincide con "esta casa" y "foto de gato" coincide con "foto de gatito".
  • Traducción de números contextuales de texto a texto y viceversa: Hace coincidir la versión textual de un número con la representación numérica y viceversa. Por ejemplo, "cinco gatos" coincide con "5 gatos".
  • Conversión plural automática: Hace coincidir "gato" con "gatos".

Conceptos de la búsqueda en el texto completo

La búsqueda en el 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 analizador de tokens es una función de SQL que se usa para la tokenización.
  • Un índice invertido almacena tokens. Usa consultas de SQL para buscar en el índice invertido.

Para comprender la búsqueda de texto completo, analicemos una aplicación que use una base de datos para almacenar canciones de cada cantante. Cada fila corresponde a 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 enviar directamente la entrada del usuario final desde el cuadro de búsqueda a la función SEARCH de SQL (con la sintaxis de consulta).
  • Spanner usa índices de búsqueda para buscar documentos que coincidan en diferentes campos. Por ejemplo, una aplicación podría emitir una consulta para buscar "cry" en el asunto con "so cold" en la letra y "Prince" como el 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 en el 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 con un elemento. Con los índices de búsqueda, la aplicación puede buscar filas que contengan una etiqueta específica de manera eficiente. Para obtener más información, consulta Tokenización de arrays.

  • Encontrar datos que residen en la intersección de un conjunto de condiciones de consulta 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 cuándo 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 Foto y un tamaño superior a 1 MB.
    • Cuando forma parte de una intersección de condiciones descritas anteriormente. Por ejemplo, para encontrar productos en los que color = "yellow" AND size = 14 AND rating >= 4.5.
    • Cuando buscas la intersección de columnas numéricas. Por ejemplo, considera una tabla que almacena las horas de inicio y finalización de los eventos. Los índices de búsqueda pueden implementar de manera eficiente una consulta que busque eventos que se hayan producido en un momento determinado: start_time <= @p AND end_time > @p.

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

Pasos para la búsqueda en el texto completo

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

  1. Asigna tokens a un documento con las funciones del asignador de tokens 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 consulta 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 cobra cargos adicionales cuando usas la búsqueda en el texto completo, aunque la implementación de esta función aumentará los costos debido a la necesidad de recursos de procesamiento y almacenamiento adicionales.

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

¿Qué sigue?