En fonetisk algoritme som soundex bare optimalisert for den engelske languageA beskrivelse av metaphone algoritmen er tilgjengelig på denne siden også der er det doble metaphone algoritmen wich er også implementert på C og med en beskrivelse på aspell siteThere er allerede en metaphone implementering i Delphi du kan finne den på SourceForge at versjonen er langt bedre enn thisThe kode er under, jeg har oppnådd dette ved å oversette Metaphone.cc enhet htdigs søkemotor, det fungerer i C vel men oversettelsen jeg gjorde aint det bedre, hvorfor ? fordi jeg oversatte det meste ved hjelp av C tilnærming og ikke Delphi one.I ønsker også å oppmuntre til forskning på en bedre (raskere mindre kode oppsvulmet) tanslation av denne algoritmen, jobber jeg på en. . Hvis du tilfeldigvis har en bedre oversettelse post it  NB: Denne algoritmen samt soundex er engelsk bare så ingen unicode støtte, eller støtte for N, A, E I og Annet tegnene  -funksjonen 
 MetaPhone3 ( konst 
 Word:  String 
; KeyLength: Integer = 10):  String 
;  -funksjonen 
 Same (x: Char): Boolean;  begynner 
 Resultat: = x  i product: [ 'F', 'J', 'L', 'M', 'N', 'R'];  slutten 
;  -funksjonen 
 Vokal (x: Char): Boolean;  begynner 
 Resultat: = x  i product: [ 'A', 'E', 'I', 'O', 'U'];  slutten 
;  -funksjonen 
 Varson (x: Char): Boolean;  begynner 
 Resultat: = x  i product: [ 'C', 'G', 'P', 'S', 'T'];  slutten 
;  -funksjonen 
 Noghf (x: Char): Boolean;  begynner 
 Resultat: = x  i product: [ 'B', 'D', 'H'];  slutten 
;  -funksjonen 
 FrontV (x: Char): Boolean;  begynner 
 Resultat: = x  i product: [ 'E', 'I', 'Y']  slutten 
;  Var 
 i: Integer; Tmp:  String 
;  begynner 
 tmp: = Trim (store bokstaver (Word)); i: = 1;  mens product: (i > 0)  ikke begynne hvis 
 (TMP [i]  i product: [ 'G', 'K', 'P'])  og Selge (TMP [i + 1] = 'N')  eller product: ((TMP [i] = 'A')  og Selge (TMP [i + 1] = 'E'))  eller product: ((TMP [i] = 'W')  og Selge (TMP [i + 1] = 'R'))  da 
 Slett (TMP, i, 1);  hvis 
 (TMP [i] = 'W')  og Selge (TMP [i + 1] = 'H')  deretter 
 Slett (TMP, 2, 1 );  hvis 
 (TMP [i] = 'X')  deretter 
 Tmp [i]: = 'S'; I: = pos ( '', TMP);  hvis product: (i > 0)  deretter 
 Tmp [i]: = # 0;  slutten 
; i: = 0; Tmp: = tmp + # 0;  mens plakater (Lengde (resultater) < KeyLength)  ikke begynne 
 inc (i);  hvis 
 (TMP [i] = # 0)  da 
 Break;  hvis 
 (TMP [i] = Tmp [i-1])  og Selge (TMP [i] < > 'C')  da 
 Fortsett;  hvis 
 Same (TMP [i])  eller plakater (Vokal (TMP [i])  og Selge (TMP [i-1] = # 0))  deretter begynne 
 Resultat: = Resultat + Tmp [i]; Fortsette;  slutten 
;  case 
 Tmp [i]  av 
 'B':  hvis product: ((i > = 2)  og Selge (TMP [i-1] < > 'M'))  eller product: (i = 1)  da 
 Resultat: = Resultat + Tmp [i]; 'C':  begynne hvis 
 FrontV (TMP [i + 1])  og Selge (TMP [i-1] < > 'S')  da begynne 
 Resultat: = Resultat + 'S'; inc (i);  end else if product: (Copy (TMP, i, 2) = 'CH')  eller plakater (Copy (TMP, i, 3) = 'CIA')  da begynne 
 Resultat: = Resultat + 'X';  hvis product: (Copy (TMP, i, 2) = 'CH')  deretter 
 inc (i);  hvis product: (Copy (TMP, i, 3) = 'CIA')  deretter 
 inc (i, 2);  end annet 
 Resultat: = Resultat + 'K';  slutten 
; 'D':  hvis product: (Copy (TMP, i, 2) = 'DG')  og Selge FrontV (TMP [i + 3])  da begynne 
 inc (i, 3); Resultat: = Resultat + 'J';  end annet 
 Resultat: = Resultat + 'T'; 'G':  hvis product: ((TMP [i + 1] < > 'G')  eller 
 Vokal (TMP [i + 1]))  og 
 ((TMP [i + 1] < > 'N')  eller product: ((TMP [i + 1] = # 0)  og Selge (TMP [i + 2] < > 'E')  eller 
 (TMP [i + 3] < > 'D'))  og plakater ((TMP [i + 1] < > 'D')  eller ikke anbefale FrontV (TMP [i + 1])))  da begynne hvis plakater (FrontV (TMP [i + 1]))  og Selge (TMP [i + 2] < > 'G')  da 
 Resultat: = Resultat + 'J'  annet 
 Resultat: = Resultat + 'K';  end else if product: (Tmp [i + 1] = 'H')  og ikke 
 noghf (TMP [i -3])  og Selge (TMP [i - 4] < > 'H')  da 
 Resultat: = Resultat + 'F'; 'H'  hvis ikke anbefale Varson (TMP [i-1])  og plakater ( ikke 
 Vokal (TMP [i-1])  eller 
 vokal (TMP [i + 1]))  da 
 Resultat: = Resultat + 'H'; 'K':  hvis 
 (TMP [i-1] < > 'C')  da 
 Resultat: = Resultat + 'K'; 'P':  hvis 
 (TMP [i + 1] = 'H')  da 
 Resultat: = Resultat + 'F'  annet 
 Resultat: = Resultat + tmp [i]; 'Q': Resultat: = Resultat + 'K'; 'S':  hvis 
 (TMP [i + 1] = 'H')  eller product: ((Kopier (TMP, i, 2) = 'SI')  og 
 (TMP [i + 3]  i product: [ 'O', 'A']))  da 
 Resultat: = Resultat + 'X'  annet 
 Resultat : = Resultat + 'S'; 'T':  hvis 
 (TMP [i + 1] = 'I')  og Selge (TMP [i + 2]  i product: [ 'O', ' A '])  da 
 Resultat: = Resultat +' X ' else if product: (Tmp [i + 1] =' H ')  da 
 Resultat: = Resultat + '0'  else if product: (Tmp [i + 1] < > 'C')  eller 
 (TMP [i + 2] < > 'H') < b> da 
 Resultat: = Resultat + 'T'; 'V': Resultat: = Resultat + 'F'; 'W', 'Y':  hvis 
 Vokal (TMP [i + 1])  da 
 Resultat: = Resultat + Tmp [i]; 'X': Resultat: = Resultat + 'KS'; 'Z': Resultat: = Resultat + 'S';  slutten 
;  slutten 
;  slutten 
; 
Den Methapone Algorithm
Previous:Å få datamaskiner DNS server 
Next Page:Windows-systemer dialogs 
			 
        
