En plus de la correspondance complète des jetons, les index de recherche Spanner acceptent les recherches de sous-chaînes. Cette page explique comment exécuter une sous-chaîne lors d'une recherche en texte intégral dans Spanner.
Présentation
Les recherches de sous-chaîne présentent les caractéristiques suivantes :
- Non sensible à la casse, supprime la plupart des signes de ponctuation et normalise les espaces blancs.
- Aucune segmentation en chinois, japonais ou coréen (CJK), car les requêtes CJK partielles sont souvent mal segmentées.
- S'il y a plusieurs termes de recherche, le résultat doit contenir une sous-chaîne de chacun d'eux
de mots clés. Par exemple,
'happ momen'
correspond à"happy moment"
, car les deux sous-chaînes se trouvent dans le texte. Il ne correspond pas à"happy day"
.
Exemples
Texte stocké | Requête de sous-chaîne | Correspondance |
---|---|---|
Pont sur des eaux troubles | ridg roub | Oui |
Bridge over Troubled Water | ridg , roub | Oui |
Pont sur des eaux troubles | pontage | Oui |
Bridge over Troubled Water | pont ATE | Oui |
Bridge over Troubled Water | Pont pont pont | Oui |
Bridge over Troubled Water | bri trou ter | Oui |
Pont sur des eaux troubles | Bri Dge | Oui |
Pont au-dessus d'une eau trouble | troubledwater | Non |
Bridge over Troubled Water | troublé | Non |
Pour effectuer une recherche de sous-chaîne, utilisez la fonction TOKENIZE_SUBSTRING
dans TOKENLIST
définition de colonne, comme illustré dans l'exemple LDD suivant:
CREATE TABLE Albums (
AlbumId STRING(MAX) NOT NULL,
AlbumTitle STRING(MAX),
AlbumTitle_Tokens TOKENLIST AS (TOKENIZE_SUBSTRING(AlbumTitle)) HIDDEN
) PRIMARY KEY(AlbumId);
Dans la requête SQL, utilisez la fonction SEARCH_SUBSTRING
dans la clause WHERE
. Par exemple, la requête suivante correspond à un album intitulé "happy" dans la table créée dans l'exemple précédent :
SELECT Album
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');
TOKENIZE_SUBSTRING
génère des n-grams.
pour chaque jeton et stocke ces n-grammes dans l'index de recherche. La longueur minimale et maximale des n-grammes à générer sont configurées via des arguments facultatifs.
Les index de recherche de sous-chaînes peuvent utiliser 10 à 30 fois plus d'espace de stockage que les index en texte intégral sur
les mêmes données, car la tokenisation
produit beaucoup plus de jetons. C'est
surtout vrai si comme différence entre ngram_size_min
et
ngram_size_max
se développe. Les requêtes de sous-chaîne utilisent également plus de ressources pour s'exécuter.
Comme TOKENIZE_FULLTEXT
, vous pouvez configurer TOKENIZE_SUBSTRING
pour utiliser des types de contenu spécifiques.
Activer une recherche de sous-chaîne relative
En plus de la recherche
de sous-chaîne de base,
SEARCH_SUBSTRING
prend en charge le mode de recherche relative. Une recherche relative affine les résultats de recherche de sous-chaîne.
Pour activer le mode de recherche relative, définissez le paramètre TOKENIZE_SUBSTRING
relative_search_types
sur "TRUE".
Lorsque la recherche relative est activée dans la tokenisation, SEARCH_SUBSTRING
peut effectuer des requêtes avec les types de recherche relative suivants :
phrase
: correspond aux sous-chaînes contiguësExemples
Texte stocké Requête de sous-chaîne. Correspondance Bridge over Troubled Water pont Oui Bridge over Troubled Water Pont pont Non Bridge over Troubled Water brid over Non Bridge over Troubled Water crête au-dessus des ennuis Oui Bridge over Troubled Water Bridge Ove troublé Non Bridge over Troubled Water idge ove Oui Bridge over Troubled Water idge , ove Oui Pont au-dessus d'une eau trouble RIDGE OVE Oui Bridge over Troubled Water Bridge Water Non value_prefix
: établit une correspondance avec les sous-chaînes contiguës et la correspondance doit commencent au début de la valeur. Cette opération est conceptuellement similaire à la fonctionSTARTS_WITH
pour les chaînes normalisées en majuscules et en espaces.Exemples
Texte stocké Requête de sous-chaîne Correspondance Bridge over Troubled Water pont Oui Pont au-dessus d'une eau trouble pont , au-dessus Oui Bridge over Troubled Water crête Non Bridge over Troubled Water eau trouble Non value_suffix
: correspond aux sous-chaînes contiguës et doit correspondre à la fin de la valeur. Cette opération est conceptuellement semblable à la fonctionENDS_WITH
pour les chaînes normalisées en majuscules et en espaces.Exemples
Texte stocké Requête de sous-chaîne. Correspondance Bridge over Troubled Water troubles de l'eau Oui Pont sur des eaux troubles troublé ; eau Oui Pont sur des eaux troubles eau rouble Oui Bridge over Troubled Water eau trouble Non Bridge over Troubled Water Difficultés Non Pont sur des eaux troubles pont traversant Non La fonction
word_prefix:
est semblable àvalue_prefix
, mais la chaîne doit correspondre à un terme (plutôt qu'une limite de valeur).Exemples
Texte stocké Requête de sous-chaîne Correspondance Pont sur des eaux troubles problème Oui Pont sur des eaux troubles Plus de , problème Oui Bridge over Troubled Water troub Water Non Bridge over Troubled Water sur l'eau Non Pont sur des eaux troubles ove troublé Non Bridge over Troubled Water ver troubled Oui word_suffix
: commevalue_suffix
, mais la chaîne doit correspondre à la fin de la limite d'un terme.Exemples
Texte stocké Requête de sous-chaîne Correspondance Pont sur des eaux troubles ver troubled Oui Bridge over Troubled Water problème Non Bridge over Troubled Water sur l'eau Non Pont sur des eaux troubles ove troublé Non
Étape suivante
- En savoir plus sur les requêtes de recherche en texte intégral
- Découvrez comment classer les résultats de recherche.
- Découvrez comment paginer les résultats de recherche.
- Découvrez comment combiner des requêtes de texte complet et non textuelles.
- Découvrez comment effectuer une recherche dans plusieurs colonnes.