La fonction SOUNDEX() dans le langage SQL permet de retourner 4 caractères en fonction de la sonorité d’une chaîne de caractère. Cette chaîne de retour est régulièrement utilisée pour évaluer la similarité sonore entre 2 chaînes. Une utilisation courante consiste a utiliser cette fonction SQL pour améliorer la pertinence d’un algorithme dans le cas où un utilisateur se trompe dans l’orthographe d’un mot.
Attention : par défaut le système se base sur les sonorités anglaises. Dès lors, rien ne garanti un bon fonctionnement pour les autres langues.
Syntaxe
L’utilisation de cette fonction se fait via la syntaxe suivante :
SELECT SOUNDEX('hello');
Cette requête SQL retourne les résultats suivants :
H400
Exemple
Sonorité de “john” et “jone”
Il est possible de juger concrètement de la pertinence
SELECT SOUNDEX('john'), SOUNDEX('jone');
Résultat :
SOUNDEX('john') | SOUNDEX('jone') |
---|---|
J500 | J500 |
Rechercher un utilisateur à partir de son prénom mal orthographié
Pour le bien de ce tutoriel, nous allons imaginer une application utilisant une base de données avec une table des utilisateurs.
Table utilisateur :
id | prenom | nom |
---|---|---|
1 | John | Smith |
2 | Joël | Lemaitre |
3 | Valéry | Buisson |
Cette application possède son propre moteur de recherche pour rechercher les utilisateurs. La fonction SOUNDEX() va permettre de récupérer la liste des utilisateurs en fonction d’un nom, du moment que le nom se prononce de la même façon.
La requête ci-dessous est un exemple m’étant en scène un utilisateur qui recherche l’utilisateur “john” avec une mauvaise orthographe, en utilisant à la place le mot “jone”.
SELECT id, prenom, nom FROM utilisateur WHERE SOUNDEX(prenom) = SOUNDEX('jone')
Résultat :
id | prenom | nom |
---|---|---|
1 | John | Smith |
Ce résultat démontre bien que la fonction peut aider un formulaire de recherche a trouver des résultats potentiellements pertinents.