Utilisation de la recherche en texte intégral¶
Vous pouvez utiliser les fonctions de recherche pour trouver des données de caractère (texte) et des adresses IPv4 dans des colonnes spécifiées à partir d’une ou de plusieurs tables, y compris les champs dans les colonnes VARIANT, OBJECT et ARRAY. Cette fonction recherche le texte dans des colonnes ou des chaînes spécifiées en fonction d’une liste de termes de recherche donnés. La fonction renvoie TRUE si le texte correspond à l’un des termes de recherche spécifiés.
Dans la plupart des cas, vous appelez la fonction SEARCH en la spécifiant dans la liste SELECT ou la clause WHERE d’une instruction SELECT. Si la fonction est utilisée comme un filtre de la clause WHERE, la requête renvoie des lignes lorsque la fonction renvoie TRUE.
La fonction SEARCH ne nécessite aucune configuration ni aucun privilège supplémentaire. Si vous utilisez un rôle disposant des privilèges nécessaires pour accéder aux données d’une colonne, vous pouvez rechercher ces données à l’aide de la fonction SEARCH.
Les sections suivantes contiennent plus d’informations sur la fonction SEARCH et sur l’optimisation des performances de la requête lorsque vous l’utilisez :
Utilisation de la fonction SEARCH¶
La fonction SEARCH recherche des données de caractère (texte) dans des colonnes spécifiées d’une ou de plusieurs tables, y compris les champs dans les colonnes VARIANT, OBJECT et ARRAY.
Lorsque vous utilisez la fonction SEARCH, un analyseur de texte divise le texte en jetons, qui sont des unités discrètes de texte, comme des mots ou des nombres. Un analyseur par défaut est appliqué si vous n’en spécifiez pas. L’analyseur extrait les jetons à la fois des termes de recherche et des données. Si un jeton extrait des termes de recherche correspond exactement à un jeton extrait d’une colonne ou d’un champ spécifié, la fonction renvoie TRUE.
Dans l’exemple suivant, on recherche la chaîne LEOPARD
dans le texte snow leopard
:
SELECT SEARCH('snow leopard','LEOPARD');
+----------------------------------+
| SEARCH('SNOW LEOPARD','LEOPARD') |
|----------------------------------|
| True |
+----------------------------------+
Dans l’exemple suivant, on recherche la chaîne LION
dans le texte snow leopard
:
SELECT SEARCH('snow leopard','LION');
+-------------------------------+
| SEARCH('SNOW LEOPARD','LION') |
|-------------------------------|
| False |
+-------------------------------+
La liste des termes de recherche est une liste OR, donc toute correspondance avec n’importe quel terme répertorié renvoie TRUE. Si vous avez besoin d’une logique différente pour la recherche, vous pouvez modifier la requête. Par exemple, vous pouvez appeler la fonction SEARCH plusieurs fois dans une requête avec les conditions AND.
Pour plus d’informations sur cette fonction et des exemples supplémentaires, voir SEARCH.
Utilisation de la fonction SEARCH_IP¶
La fonction SEARCH_IP recherche des adresses IPv4 valides dans des colonnes de chaînes de caractères spécifiées à partir d’une ou de plusieurs tables, y compris les champs dans les colonnes VARIANT, OBJECT et ARRAY. La recherche est basée sur un seule adresse IP que vous spécifiez. Si cette adresse IP correspond exactement à une adresse IP dans la colonne ou le champ spécifié, la fonction renvoie TRUE.
Dans l’exemple suivant, on recherche l’adresse IP 10.10.10.1
dans le texte 192.0.2.146
:
SELECT SEARCH_IP('192.0.2.146','10.10.10.1');
+---------------------------------------+
| SEARCH_IP('192.0.2.146','10.10.10.1') |
|---------------------------------------|
| False |
+---------------------------------------+
Pour plus d’informations sur cette fonction et des exemples supplémentaires, voir SEARCH_IP.
Optimisation des requêtes qui utilisent la fonction SEARCH¶
Pour améliorer les performances des requêtes qui utilisent la fonction, vous pouvez éventuellement activer l’optimisation de la recherche FULL_TEXT sur une colonne spécifique ou un ensemble de colonnes dans une table. Lorsque vous activez l’optimisation de la recherche, un nouveau chemin d’accès à la recherche est construit et maintenu.