Section courante

A propos

Section administrative du site

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 :

  1. Program SoundexSamples;
  2.  
  3. Const
  4.   Group:Array[0..6] of String[8] = (
  5.     'AEHIOUWY',
  6.     'BFPV',
  7.     'CGJKQSXZ',
  8.     'DT',
  9.     'L',
  10.     'MN',
  11.     'R'
  12.   );
  13.  
  14. Function Validity(Letter:Char):Char;
  15. Var
  16.   I,J:Integer;
  17.   S:String[8];
  18. begin
  19.   For I:=Low(Group) to High(Group)do Begin
  20.     S:=Group[I];
  21.     For J:=1 to Length(S)do If UpCase(Letter)=S[J] Then Validity:=Chr(48+I);
  22.   End;
  23. End;
  24.  
  25. Function Soundex(Const S:String):String;
  26. Var
  27.   Sndex:String;
  28.   Oval,Value:Char;
  29.   I:Integer;
  30. Begin
  31.  Soundex:='';
  32.  If S=''Then Exit;
  33.  Sndex:='';
  34.  For I:=1 to Length(S) do Begin
  35.   Value:=Validity(S[I]);
  36.   If I=1 Then Sndex:=S[1] Else
  37.   If(Value<>'0')and(Value<>Oval)Then Sndex:=Sndex+Value;
  38.   Oval:=Value;
  39.  End;
  40.  Soundex:=Copy(Sndex+'000',1,4);
  41. End;
  42.  
  43. BEGIN
  44.   WriteLn('Gladir = ',Soundex('Gladir'));
  45.   WriteLn('Sylvain = ',Soundex('Sylvain'));
  46.   WriteLn('Maltais = ',Soundex('Maltais'));
  47.   WriteLn('LAVAL = ',Soundex('LAVAL'));
  48. END.

on obtiendra le résultat suivant :

Gladir = G436
Sylvain = S415
Maltais = M432
LAVAL = L140

Remarque



Dernière mise à jour : Dimanche, le 12 avril 2020