La fonction de Soundex est un algorithme inventé par Robert C. Russell et Margaret King Odell en 1918. Elle fut utilisé entre autre pour effectuer la rétrospective du recensement américain de 1890 à 1920. De nos jours, elle est essentiellement utilisé dans la base de données ou de statistiques, comme MySQL avec la fonction SOUNDEX, SAS avec la fonction SOUNDEX par exemple. Voici un exemple de l'utilisation de cette algorithme en Turbo Pascal directement appliqué sur des noms simples :
- Program SoundexSamples;
-
- Const
- Group:Array[0..6] of String[8] = (
- 'AEHIOUWY',
- 'BFPV',
- 'CGJKQSXZ',
- 'DT',
- 'L',
- 'MN',
- 'R'
- );
-
- Function Validity(Letter:Char):Char;
- Var
- I,J:Integer;
- S:String[8];
- begin
- For I:=Low(Group) to High(Group)do Begin
- S:=Group[I];
- For J:=1 to Length(S)do If UpCase(Letter)=S[J] Then Validity:=Chr(48+I);
- End;
- End;
-
- Function Soundex(Const S:String):String;
- Var
- Sndex:String;
- Oval,Value:Char;
- I:Integer;
- Begin
- Soundex:='';
- If S=''Then Exit;
- Sndex:='';
- For I:=1 to Length(S) do Begin
- Value:=Validity(S[I]);
- If I=1 Then Sndex:=S[1] Else
- If(Value<>'0')and(Value<>Oval)Then Sndex:=Sndex+Value;
- Oval:=Value;
- End;
- Soundex:=Copy(Sndex+'000',1,4);
- End;
-
- BEGIN
- WriteLn('Gladir = ',Soundex('Gladir'));
- WriteLn('Sylvain = ',Soundex('Sylvain'));
- WriteLn('Maltais = ',Soundex('Maltais'));
- WriteLn('LAVAL = ',Soundex('LAVAL'));
- END.
on obtiendra le résultat suivant :
Gladir = G436Sylvain = S415
Maltais = M432
LAVAL = L140
Remarque
- Il est a noter que certains algorithme préfère ne pas retourner de zéro à la fin tandis que d'autres ajouter des 0 afin de s'assurer qu'elle est toujours une longueur de 4 caractères.
Dernière mise à jour : Dimanche, le 12 avril 2020