Mailinglisten-Archive |
Hi, > Beim dem rumspielen mit "soundex()" ist mir etwas aufgefallen, was ich nicht > ganz deuten kann. > 1. Der String "brainbits" bekommt den Wert "B651". > 2. Der String "brainhits" bekommt den Wert "B653". > 3. Der String "brainpool" bekommt den Wert "B651". > IMHO ist die Lautähnlichkeit zwischen 1. und 2. größer als zwischen 1. und > 3. Warum aber sieht soundex() das genau andersherum? Ich glaube das liegt daran, dass das "b" von bits prinzipiell der gleiche ton ist wie das "p", bloss nicht betont (dito gilt für "d" und "t", "k" und "g", ..). Den zu Grunde liegenden Algorithmus kenne ich nicht, aber er ist im Buch "The Art Of Computer Programming, Vol. 3: Sorting And Searching", von Donald Knuth Addison-Wesley (1973), S. 391-392 beschrieben. Bei dieser Buchreihe soll es sich um "die Bibel für Programmierer" handeln, habe ich mir sagen lassen. Leider sind sämtliche Beispiele in einer Meta-Assemblersprache geschrieben (für einen nicht-existierenden Prozessor) - mit der Idee, dass man das Buch nicht jedes Jahrzehnt neu schreiben muss um der momentan populären Sprache gerecht zu werden. Deshalb ist das Buch nicht gerade trivial zu verstehen, aber wenn Du viel Freizeit hast, kannst Du dich ja heranwagen. Um den Algorithmus für die deutsche Sprache anpassen zu können, müsstest Du also zuerst den original-Algorithmus kennen lernen :) -daniel
php::bar PHP Wiki - Listenarchive