home *** CD-ROM | disk | FTP | other *** search
- {
- REYNIR STEFANSSON
-
- Somebody was saying something about Soundex hashing. Here is my
- Implementation of that:
- }
-
- Unit Soundex;
-
- Interface
-
- Type
- Sdx4 = String[4];
-
- Function SoundexOf(WorkStr : String) : Sdx4;
-
- Implementation
-
- Var
- Group : Array[0..6] of String[8];
-
- Function ValidityOf(Letter : Char) : Char;
- Var
- Valu, j : Integer;
- Chs : String[8];
- begin
- For Valu := 0 to 6 DO
- begin
- Chs := Group[Valu];
- For j := 1 to Length(Chs) DO
- begin
- if UpCase(Letter) = Chs[j] then
- ValidityOf := Chr(48+Valu);
- end;
- end;
- end;
-
- Function SoundexOf(WorkStr : String) : Sdx4;
- Var
- Sndex : Sdx4;
- Oval,
- Valu : Char;
- i : Integer;
- begin
- Sndex := Copy(WorkStr, 1, 1);
- Oval := ValidityOf(WorkStr[1]);
- For i := 2 to Length(WorkStr) DO
- begin
- Valu := ValidityOf(WorkStr[i]);
- if (Valu <> '0') and (Valu <> Oval) then
- Sndex := Sndex + Valu;
- Oval := Valu;
- end;
- Sndex := Sndex + '000';
- SoundexOf := Sndex;
- end;
-
- begin
- Group[0] := 'AEHIOUWY';
- Group[1] := 'BFPV';
- Group[2] := 'CGJKQSXZ';
- Group[3] := 'DT';
- Group[4] := 'L';
- Group[5] := 'MN';
- Group[6] := 'R';
- end.
-
- {
- A Soundex-String looks like: `G032', one letter and three numbers.
- Donald Knuth wrote about Soundexing in his _Art of Computer Programming_
- series. I got my information out of Personal ComputerWorld (PCW), which in
- turn got it from Knuth.
- }