Algo. für Ähnlichkeiten in Zeichenketten-Datenfeldern
Lude
- datenbank
Hi,
wer kennt das Problem nicht. - Ein frischer Datensatzkandidat für eine DB-Tabelle kommt rein und man kann nicht ausschliessen, dass der Kandidat ein zweites Mal in die Tabelle gelangt Doppelerfassung), weil z.B. die Schreibweise eines Zeichenketten-Datenfeldes, typischerweise ein Name, abweicht: "Allianz AG" ist nicht gleich "ALLIANZ"
"Mein" DB(M)S "MS SQL Server" ist da hilfreich mit den Funktionen "Soundex" und "Difference", die nicht an Deutsche Bedürfnisse angepasst sind.
Frage:
Kennt jemand einen guten ANSI SQL-Algo. für Deutsche (und ggf. andere mitteleuropäische) Bedürfnisse angepasst oder einen guten für TSQL?
Gruss,
Lude
Hallo,
Frage:
Kennt jemand einen guten ANSI SQL-Algo. für Deutsche (und ggf. andere mitteleuropäische) Bedürfnisse angepasst oder einen guten für TSQL?
Das ist keine triviale Aufgabe. Phonetische Suche ist relativ komplex. Für ein gutes System kann man relativ viel Geld ausgeben.
Allerdings Dein obiges Beispiel mit
"Allianz AG" ist nicht gleich "ALLIANZ"
könnte man ja auch auf anderem Wege abfangen. Vor dem Vergleich wandelt man erstmal alle Buchstaben in Großbuchstaben um und alle Umlaute in ae, ou bzw. ue. und ß in Doppel-S
Dann kann man ja stumpfe Teilzeichenkettensuche machen und ist damit schon ein ganzes Stück weiter. Den Algorithmuskönnte man jetzt noch ausfeilen, in dem man sagt, umso mehr Buchstaben übereinstimmen, umso höher ist die Wahrscheinlichkeit dass es sich um die selben Daten handelt. Man könnte sich selbst eine Prozentzahl als Grenzwert setzen, ab wann zwei Datensätze als gleich anzusehen sind. Wobei ich übereinstimmungen bei mehreren aufeinanderfolgenden Buchstaben höher bewerten würde als wenn z.B. nur jeder zweite Buchstabe übereinstimmt.
Tja ... ein fertiger Algorithmus ist das zwar nicht, aber vielleicht als Ideengeber hilfreich.
Gruss
MichaelB
"Mein" DB(M)S "MS SQL Server" ist da hilfreich mit den Funktionen "Soundex" und "Difference", die nicht an Deutsche Bedürfnisse angepasst sind.
http://www.cuj.com/articles/2000/0006/0006d/0006d.htm?topic=articles
http://aspell.sourceforge.net/metaphone/