germanphonetic icon indicating copy to clipboard operation
germanphonetic copied to clipboard

Code für 'c' als letztes Zeichen falsch.

Open sov-aperogiannakis opened this issue 7 years ago • 3 comments

x3m_soundex_ger.php, Zeile 185:

     case 'c':
        if ($x + 1 < $wordlen) {
           // ...
        } else {
---        $code .= "4";
+++        $code .= "8";
        }

Defaultwert für 'c', wenn sonst keine Regel zutrifft, sollte laut Tabelle eigentlich 8 sein. (in x3m_soundex_ger.sql ist es korrekt implementiert.)

sov-aperogiannakis avatar Jul 03 '17 07:07 sov-aperogiannakis

Nun bin ich etwas verwirrt. Guckst du hier: #7 Was gilt nun?

deezaster avatar Jul 03 '17 08:07 deezaster

Da fragt du mich aber etwas. Ich bin auch etwas verwirrt. Der Tabelle nach muss es meiner Meinung nach eine 8 sein:

C | nicht vor A, H, K, O, Q, U, X | 8

C als letztes Zeichen kommt ja nicht "vor" diesen Buchstaben. Ich kenne die Java-Implementierung nicht und leider hatte ich noch nicht die Zeit dazu, da etwas tiefer einzusteigen.

Tatsache ist, dass deine PHP und SQL-Implementierungen diesbezüglich auch unterschiedlich implementiert sind, so dass ich von einem Fehler im PHP-Code ausging. Das Issue ist mir leider entgangen.

sov-aperogiannakis avatar Jul 03 '17 12:07 sov-aperogiannakis

Die meisten Implementierungen, die ich in meiner Webrecherche finden konnte, errechnen für ein C am Wortende eine 8. Hier orientieren sie sich wohl auch am Wikipedia-Artikel. Die Tabelle dort entspricht der, die Martin Wilz in seiner Magisterarbeit beschreibt.

Ich habe die Vermutung, dass man sich hier eher an die Endungen von Familiennamen mit slavischen Ursprung orientiert hat, z.B. Petrovic, aber auch nach Wörtern wie PC [pe:tse:]. Aber ohne einen direkten Blick in den Originalartikel von Hans Joachim Postel kann ich nicht mit Sicherheit sagen, weshalb es eine 8 und nicht eine 4 ist (wenn er überhaupt darauf eingegangen ist).

sov-aperogiannakis avatar Jul 04 '17 02:07 sov-aperogiannakis