Fonctions de correspondance phonétique

Le langage SQL de Netezza Performance Server supporte deux fonctions de correspondance phonétique que vous pouvez utiliser pour encoder les noms en représentations phonétiques en utilisant les algorithmes SoundEx NYSIIS ou Double Metaphone.

L'encodage phonétique des noms permet de faire correspondre les noms en fonction de leur prononciation et de réduire les erreurs pouvant résulter de variations orthographiques. Les fonctions de correspondance phonétique ne sont pas des comparaisons sensibles à la casse ; les représentations phonétiques sont les mêmes pour deux chaînes qui ont la même orthographe mais une casse différente. Ces fonctions prennent en charge les types de données VARCHAR et CHAR, et plus particulièrement le sous-ensemble ASCII du codage Latin9. Les fonctions ignorent tout caractère en dehors du sous-ensemble ASCII.

Remarque : si vous utilisez des chaînes qui font appel aux fonctions phonétiques avec des caractères situés au-delà de la plage ASCII, translittérez les chaînes pour convertir les caractères accentués en leurs versions ASCII non accentuées.

SoundEx NYSIIS

Syntaxe SQL :
<varchar(6) value> = nysiis(<str_expr>)

Le Soundex est un algorithme phonétique bien connu qui permet d'indexer les noms en fonction du son tel qu'il est prononcé en anglais. Cette fonction convertit une chaîne de caractères en sa représentation Soundex en utilisant la variante du Soundex du New York State Identification and Intelligence System (NYSIIS). La valeur de retour est une chaîne de six caractères maximum qui identifie la prononciation de la chaîne d'entrée. Par exemple, la fonction " nysiis('Washington') renvoie la chaîne "wasang", tandis que la fonction " nysiis('brown') renvoie la valeur "bran".

Double métaphore

Syntaxe SQL :
<int4 value> = dbl_mp(<str_expr>)

Le double métaphore est un autre algorithme phonétique permettant d'indexer les chaînes de caractères en fonction de leur prononciation. Similaire à Soundex, il utilise un ensemble de règles différentes pour l'anglais et la prononciation alternative. La fonction renvoie deux encodages de chaîne de 4 caractères, une clé primaire et une clé secondaire (ou alternative), pour la prononciation de la chaîne d'entrée. Les mots de même sonorité partagent les mêmes clés, bien qu'ils puissent être de longueur et d'orthographe différentes. Par exemple, les clés primaires et secondaires à double métaphore du nom "washington" sont "AXNK" et "FXNK".

Pour améliorer les performances, la fonction 'dbl_mp fait correspondre les clés de 4 caractères à des nombres de 16 bits et renvoie une valeur composite de 32 bitsNetezza Performance Server type int4) qui contient à la fois les clés primaires et secondaires de 16 bits. La fonction " dbl_mp('washington') renvoie donc la valeur 781598358.

Il existe trois fonctions d'aide (pri_mp, " sec_mp et " score_mp) que vous pouvez utiliser pour extraire les clés primaires et secondaires de la valeur de retour sous forme de chaînes et pour effectuer des comparaisons de clés afin de déterminer la pertinence de la notation.

Métaphore primaire

Syntaxe SQL :
<varchar(4) value> = pri_mp(<int4 dbl_mp return value>)

Cette fonction d'aide prend la valeur renvoyée par un appel à la fonction " dbl_mp et renvoie la chaîne métaphone primaire de quatre caractères correspondante. Par exemple, " pri_mp(781598358) renvoie la clé primaire AXNK.

Métaphore secondaire

Syntaxe SQL :
<varchar(4) value> = sec_mp(<int4 dbl_mp return value>)

Cette fonction d'aide prend la valeur renvoyée par un appel à la fonction " dbl_mp et renvoie la chaîne métaphone secondaire de quatre caractères correspondante. Par exemple, " sec_mp(781598358) renvoie la clé secondaire FXNK.

Métaphones de score

Syntaxe SQL :
<varchar(4) value> = score_mp(<int4 dbl_mp value 1>, <int4 dbl_mp 
value 1>, <int4 strong match value>, <int4 normal match value>, 
<int4 minor match value>, <int4 no match value>)
Cette fonction d'aide prend deux valeurs renvoyées par la fonction " dbl_mp et les compare pour déterminer leur degré de correspondance. Les quatre derniers arguments sont les valeurs à renvoyer pour les quatre résultats possibles de la notation ou de la correspondance. Avec le codage à double métaphore, les deux valeurs d'entrée sont considérées comme correspondantes lorsqu'une ou plusieurs de leurs clés primaires ou secondaires correspondent ; la force de la correspondance dépend des clés qui correspondent. Par exemple, la liste suivante montre comment évaluer la force de la correspondance :
Match le plus fort
Clé primaire (1) = Clé primaire (2)
Match normal
Clé secondaire (1) = Clé primaire (2)

Clé primaire (1) = Clé secondaire (2)

Correspondance minimale
Touche secondaire (1) = Touche secondaire (2)

Pour les quatre arguments de valeur de correspondance, vous pouvez spécifier des valeurs telles que 1, 2, 3 et 4 (pour la correspondance la plus forte, normale, minimale ou aucune correspondance). Vous pouvez également utiliser des valeurs pondérées telles que 100, 50, 25 et 0 afin d'obtenir plus de points pour de meilleurs résultats.

Par exemple, si vous comparez les encodages métaphone doubles pour "washington" (781598358) et "wachingten" (7815963100), vous pouvez utiliser la fonction " score_mp suivante pour déterminer leur degré de concordance :
score_mp(781598358,781596310,1,2,3,4)

La fonction renvoie la valeur 1, qui indique la correspondance la plus forte.

Si vous comparez les encodages de "washington" et "vachingten" (1050031766) :
score_mp(781598358,1050031766,100,50,25,0) 

La fonction renvoie la valeur 50, ce qui indique une correspondance normale.