En esta página, se describe qué es la búsqueda en el texto completo y cómo funciona.
Descripción general
La búsqueda en el texto completo permite compilar una aplicación que puede buscar en una tabla palabras, frases o números, en vez de solo buscar concordancias exactas 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 concordancia de palabras aproximada.
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 en cuanto se confirma en la base de datos.
Tipos de búsquedas en el texto completo
- Búsqueda de texto básica: Busca contenido mediante la totalidad o una parte de una
palabra o frase para recibir resultados de manera confiable. Ejemplos de predicados de consulta:
- Coincidencia con todas las palabras [tricolor rat terrier]
- Palabras o frases exactas ["rat terrier"]
- Cualquiera de estas palabras [miniatura O estándar]
- Palabra cercana [copa AROUND(3) mundial]
- 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. Coincidencias de búsquedas de rango y desigualdad un número dentro de un rango específico.
- Búsqueda basada en n-grama: Coincidencia de palabras con variaciones ortográficas, incluidas los nombres propios y los nombres 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: Encuentra 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.
- Asistencia global: Admite automáticamente la asignación de token en diferentes idiomas, incluido CJK la segmentación de clientes. 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 el usuario busca "jirafa" y encuentra documentos que contienen la palabra "jirafa".
- Incorporación de sinónimos contextuales, incluidas las palabras irrelevantes: Se agregan automáticamente. sinónimos contextualmente relevantes 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 desde y hacia el texto: Coincide con el texto. versión de un número a la representación numérica y viceversa. Por ejemplo, "cinco gatos" coincide con "5 gatos".
- Conversión plural automática: Hace coincidir "cat" con "cats".
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 asignación de token divide un documento en tokens.
- Un tokenizador es una función de SQL que se usa para la asignación de token.
- Un índice invertido almacena tokens. Usa consultas de SQL para buscar en el índice invertido.
Ejemplo de caso de uso para la búsqueda en el texto completo
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 en el 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
, comoPrince OR Camille
Las aplicaciones pueden alimentar directamente la entrada del usuario el cuadro de búsqueda en el SQLSEARCH
la función (con el sintaxis de rquery). - 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
Además de la búsqueda en el texto completo, los índices de búsqueda tienen una variedad de usos, como lo siguiente:
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 ver más información, consulta Asignación de token de array.
Encuentra 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érica, por separado o en combinación con el texto completo condiciones. Algunos ejemplos de cuándo un índice de búsqueda es útil para búsquedas:
- Cuando se combina con una aplicación de texto completo. Por ejemplo, para encontrar un correo electrónico con el asunto Picture 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 se busca la intersección de columnas numéricas. Por ejemplo, considera una tabla que almacena las horas de inicio y finalización de un evento. Búsqueda
los índices pueden implementar de forma eficiente una consulta que busque eventos que
se produjo 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 en el texto completo requiere los siguientes pasos:
- Asigna tokens a un documento con las funciones del asignador de tokens de Spanner, como
TOKENIZE_SUBSTRING
. Para obtener más información, consulta Asignación de token. - Crea un índice de búsqueda para guardar los tokens con el
CREATE SEARCH INDEX
Declaración DDL. Para obtener más información, consulta Busca índices. - Consulta documentos en el índice de búsqueda con Spanner
SEARCH
. Para obtener más información, ve a Descripción general de las consultas. - 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
- La búsqueda en el texto completo no admite Assured Workloads.
Precios
Spanner no cobra cargos adicionales cuando usas búsqueda en el texto completo, aunque la implementación de la búsqueda en el texto completo aumentar 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?
- Obtén más información sobre la asignación de tokens y los generadores de tokens de Spanner.
- Obtén más información sobre los índices de búsqueda.
- Obtén más información sobre las consultas de búsqueda de texto completo.