Der folgende Code zeigt eine Möglichkeit, Soundex in C# zu implementieren. Es gibt zwar auch andere Methoden, doch diese stellt einen guten Kompromiss zwischen Lesbarkeit und Performance dar.
Dieser Code arbeitet sich durch die bereitgestellten Daten. Er bestimmt, welche Kodierung – falls überhaupt – auf das jeweilige Zeichen anzuwenden ist. Sollten Kodierungen kürzer als vier Zeichen sein, werden sie vor der Ausgabe noch mit Nullen aufgefüllt.
So lassen sich unterschiedliche Soundex-Kodierungen abstufen
Manchmal haben ähnliche Wörter eine unterschiedliche Soundex-Kodierung. Als Beispiel sollen die beiden englischen Wörter „lake“ und „bake“ dienen. Sie klingen sehr ähnlich, aber ihre Kodierung ist nicht identisch. Aus diesem Grund gibt es im Microsoft SQL Server die Funktion Difference. Sie bestimmt, wie ähnlich sich zwei Wörter sind. Die Skala reicht von eins bis vier. dabei steht eine Vier für absolute Übereinstimmung, eine Eins für überhaupt keine Übereinstimmung.
Im Gegensatz zum Soundex-Algorithmus wurde die Formel der Difference-Funktion nicht öffentlich. Folgende Regeln kommen jedoch der in der Difference-Funktion von SQL verwendeten Formel recht nahe:
- Beide Wörter laufen durch Soundex.
- Stimmen die Soundex-Kodierungen überein, ist der Wert 4. Stimmen sie nicht überein, folgt Schritt 3.
- Kommen die drei letzten Zeichen der ersten Kodierung auch in der zweiten vor, so liegt der Wert bei 3. Weiter mit Schritt 7.
- Kommen die zwei letzten Zeichen der ersten Kodierung auch in der zweiten vor, so liegt der Wert bei 2. Weiter mit Schritt 7.
- Kommen die beiden mittleren Zeichen der ersten Kodierung auch in der zweiten vor, so ist der Wert 2. Weiter mit Schritt 7.
- Kommt das zweite, dritte oder vierte Zeichen der ersten Kodierung auch in der zweiten vor, so steigt der Wert für jede Übereinstimmung um 1.
- Entspricht das erste Zeichen der ersten Kodierung dem ersten Zeichen der zweiten Kodierung, steigt der aktuelle Wert ebenfalls um 1.
Es handelt sich hierbei nur um ein grobes Regelwerk. Doch die Ergebnisse entsprechen weitestgehend der Difference-Funktion in SQL. Nachstehend folgen einige Beispiele, die in SQL gleiche Ergebnisse erzielen:
- Zach & Zac – 4
- lake & bake – 3
- Brad & lad – 2
- horrible & great – 1
Neueste Kommentare
Noch keine Kommentare zu So lassen sich auch in C# Wörter mit Soundex kodieren
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.