Además de la coincidencia de tokens completa, los índices de búsqueda de Spanner admiten búsquedas de subcadenas. En esta página, se describe cómo ejecutar una subcadena como parte de una búsqueda de texto completo en Spanner
Descripción general
Las búsquedas de subcadena tienen las siguientes características:
- No distingue mayúsculas de minúsculas, descarta la mayoría de la puntuación y normaliza los espacios en blanco.
- Sin segmentación para chino, japonés ni coreano (CJK), ya que se realizaron consultas parciales en CJK suelen segmentarse de forma incorrecta.
- Si hay varios términos de búsqueda, el resultado debe contener una subcadena de cada uno
tiempo. Por ejemplo,
'happ momen'
coincide con"happy moment"
, ya que ambas subcadenas se encuentran en el texto. No coincide con"happy day"
.
Ejemplos
Texto almacenado | Consulta de subcadena | Coincidencia |
---|---|---|
Puente sobre aguas turbulentas | ridg roub | Sí |
Puente sobre aguas con problemas | ridg , roub | Sí |
Puente sobre aguas con problemas | sobre novia | Sí |
Bridge over Troubled Water | ate puente | Sí |
Puente sobre aguas turbulentas | Puente puente puente | Sí |
Puente sobre aguas con problemas | bri trou ter | Sí |
Puente sobre aguas turbulentas | bri dge | Sí |
Puente sobre aguas con problemas | aguas turbulentas | No |
Puente sobre aguas con problemas | dudoso | No |
Para una búsqueda de subcadenas, usa la función TOKENIZE_SUBSTRING
en TOKENLIST
.
definición de columna, como se muestra en el siguiente ejemplo de DDL:
CREATE TABLE Albums (
AlbumId STRING(MAX) NOT NULL,
AlbumTitle STRING(MAX),
AlbumTitle_Tokens TOKENLIST AS (TOKENIZE_SUBSTRING(AlbumTitle)) HIDDEN
) PRIMARY KEY(AlbumId);
En la consulta de SQL, usa la función SEARCH_SUBSTRING
en la cláusula WHERE
. Para
ejemplo, la siguiente consulta coincide con un álbum con el título "happy" de la mesa
en el ejemplo anterior:
SELECT Album
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');
TOKENIZE_SUBSTRING
genera n-grams.
para cada token y almacena estos n-gramas en el índice de búsqueda. El mínimo
la longitud máxima de los n-gramas que se generarán se configuran mediante argumentos opcionales.
Los índices de búsqueda de subcadenas pueden usar entre 10 y 30 veces más almacenamiento que los índices de texto completo en
los mismos datos, porque la asignación de token produce muchos más. Este es
especialmente si la diferencia entre ngram_size_min
y
ngram_size_max
aumenta. Las consultas de subcadena también usan más recursos para ejecutarse.
Al igual que TOKENIZE_FULLTEXT
,
puedes configurar TOKENIZE_SUBSTRING
para usar tipos específicos de contenido.
Habilita una búsqueda de substring relativa
Además de la búsqueda básica de subcadenas,
SEARCH_SUBSTRING
admite el modo de búsqueda relativa. Una búsqueda relativa define mejor la búsqueda por subcadena
resultados.
Para habilitar el modo de búsqueda relativa, establece el parámetro TOKENIZE_SUBSTRING
relative_search_types
en VERDADERO.
Cuando la búsqueda relativa está habilitada en la asignación de token, SEARCH_SUBSTRING
puede realizar
con los siguientes tipos de búsquedas relativas:
phrase
: Coincide con subcadenas contiguas.Ejemplos
Texto almacenado Consulta de subcadenas. Coincidencia Puente sobre aguas con problemas puente sobre Sí Puente sobre aguas turbulentas Puente puente puente No Bridge over Troubled Water despedida No Puente sobre aguas con problemas cresta sobre problemas Sí Puente sobre aguas con problemas puente ove problemático No Bridge over Troubled Water idge ove Sí Puente sobre aguas con problemas idge , ove Sí Bridge over Troubled Water RIDGE OVE Sí Puente sobre aguas con problemas agua del puente No value_prefix
: Coincide con substrings contiguas y la coincidencia debe comenzar al principio del valor. Es conceptualmente similar al FunciónSTARTS_WITH
para las cadenas normalizadas de mayúsculas y espacios en blanco.Ejemplos
Texto almacenado Consulta de subcadena Coincidencia Puente sobre aguas con problemas puente sobre Sí Puente sobre aguas con problemas puente , sobre Sí Puente sobre aguas con problemas cresta sobre No Bridge over Troubled Water aguas turbulentas No value_suffix
: Coincide con subcadenas contiguas y debe coincidir en el final del valor. Esto es conceptualmente similar a la funciónENDS_WITH
para cadenas normalizadas de mayúsculas y espacios en blanco.Ejemplos
Texto almacenado Consulta de subcadenas. Coincidencia Bridge over Troubled Water aguas turbulentas Sí Puente sobre aguas con problemas con problemas ; agua Sí Puente sobre aguas con problemas agua turbada Sí Puente sobre aguas con problemas wate con problemas No Puente sobre aguas turbulentas agua con problemas No Puente sobre aguas con problemas puente sobre No word_prefix:
es comovalue_prefix
, pero la cadena debe coincidir en un límite de término (en lugar de un límite de valor).Ejemplos
Texto almacenado Consulta de subcadena Coincidencia Bridge over Troubled Water más de problemas Sí Puente sobre aguas con problemas Terminó , problema Sí Puente sobre aguas con problemas agua turbia No Puente sobre aguas con problemas sobre el agua No Puente sobre aguas con problemas tener problemas No Puente sobre aguas con problemas ver con problemas Sí word_suffix
: Es similar avalue_suffix
, pero la cadena debe coincidir al final de un límite de término.Ejemplos
Texto almacenado Consulta de subcadena Coincidencia Puente sobre aguas con problemas ver con problemas Sí Puente sobre aguas con problemas más de problemas No Puente sobre aguas con problemas sobre el agua No Puente sobre aguas con problemas tener problemas No
¿Qué sigue?
- Obtén más información sobre las consultas de búsqueda de texto completo.
- Obtén información para clasificar los resultados de la búsqueda.
- Obtén información sobre cómo paginar los resultados de la búsqueda.
- Obtén información para combinar consultas de texto completo y no de texto.
- Obtén más información para buscar en varias columnas.