PHP-Entwicklung
Posts 1-10 of 38
- Back
- Next
-
Tilman Pietzsch Premium MemberThe company name is only visible to registered members.Adressvergleich
Hallo Kollegen,
meine augenblickliche Knobelaufgabe hatte ich hier
https://www.xing.com/app/forum?op=showarticles;id=8417943 bereits erwähnt, doch anscheinend brauche ich ein technischer orientiertes Board. Noch einmal kurz umrissen: Ich will in einem shopähnlichen System neu eingegebene Adressdaten der Kunden mit dem bereits vorhandenen Datenstamm abgleichen, so dass eine Person nicht mehrfache Adresseinträge erzeugt, sondern im Zweifelsfall der bereits vorhandene Eintrag genutzt wird. Die bisherigen Hilfestellungen bezogen sich leider allesamt auf Workarounds, die mir nicht weiterhelfen.
Hat hier irgend jemand schon einmal ein Script geschrieben, welches Adressen vergleicht und anhand spezifischer Kriterien als gleich identifiziert? Ich bin für alle gedanklichen Lösungsansätze dankbar, solange sie nicht wieder Krücken sind, die vom Thema abweichen.
Viele Grüße,
Tilman Pietzsch
- 25 Mar 2008, 5:12 pm
-
Jens Weller Premium Member Group moderatorThe company name is only visible to registered members.Re: Adressvergleich
Nein, habe ich noch nicht. Denke aber das sie bei solchen Freifeld angaben generell das Problem haben werden.
Ihr Ansatz ist schon richtig, möglichst nur eine Darstellung zu haben, und alle anderen in diese zu bringen.
z.b.
Str. -> Strasse
Straße -> Straße etc.
Desweiteren könnte natürlich auch ein Abgleich auf Namen, Vornamen, Ort, PLZ etc. durchgeführt werden. Wenn sie da Häufungen haben, könnte diese Sendung ja erstmal auf "Bitte überprüfen" gestellt werden, und dann entsprechend von Fall zu Fall entschieden werden.
Aber evtl. ein paar Ansätze:
Lassen sie nur eine bestimmte Anzahl an Bestellungen pro IP Adresse und Zeitraum zu.
Damit könnten sie auch verhindern, das jemand ihnen mal eben das Telefonbuch als Bestellung aufgibt ;)
- 25 Mar 2008, 5:33 pm
-
Karsten KrausThe company name is only visible to registered members.Re: Adressvergleich
Hallo Tilman,
Hat hier irgend jemand schon einmal ein Script geschrieben, welches Adressen vergleicht und anhand spezifischer Kriterien als gleich identifiziert? Ich bin für alle gedanklichen Lösungsansätze dankbar, solange sie nicht wieder Krücken sind, die vom Thema abweichen.
Ich hab für dein Problem leider auch keine Lösung. Willst bzw. musst Du diesen Weg gehen, läuft es immer auf eine möglichst strukturierte Eingabe der Daten (Vor- und Nachname getrennt, Strassenname und Hausnummer, PLZ ebenso etc. ggf. ein Dropdown für "-Strasse", "-Weg" usw. statt der Direkteingabe von XYZstrasse ).
Danach musst Du die Daten "normalisieren", also gleiche Werte (Strasse, Straße bzw. Müller und Mueller, 108a-108b und 108a - 108b) Checksumme bilden, die die Unterschiede filtert (Soundex oder das "Kölner Verfahren" kommt da in den Sinn).
Die finale Checksumme für die ganze Adresse ergibt sich dann durch Aneinanderreihen der Einzel-Checksummen für Name, Adresse, etc. Sobald dann eine eingegebene Adresse "zu nahe" an dieser Checksumme liegt, muss sie zur manuellen Überprüfung...
Dieser Ansatz hat aber IMHO das gleiche Problem wie die Captchas zu Spam-Vermeidung in Foren. Diese funktionieren auch nur deshalb, weil der Spammer mit seinem Bot möglichst viele Foren mit möglichst geringen Aufwand erreichen will. Sobald sich aber, wie in deinem Fall ein Bösewicht auf genau deinen Captcha- oder Adresserkennungsalgorithmus eingeschossen hat, wirst Du immer den Kürzeren ziehen...
Gruß
Karsten
This post was modified on 25 Mar 2008 at 06:59 pm.- 25 Mar 2008, 6:39 pm
-
Michael Gillen Premium Member Group moderatorThe company name is only visible to registered members.Re^2: Adressvergleich
Hallo.
Ist denn auch die Telefonnummer ein Pflichtfeld und dem Adressdatensatz zugeordnet? Dann gleichen Sie doch die reine Ziffernfolge der Telefonnummer ab. I.d.R wird ein und der selbe Kunde nur eine Telefonnummer angeben. Ansonsten wird eine Duplettenprüfung über die E-Mail-Adresse die auch bei der Anmeldebestätigung gemacht wird, empfohlen.
Schwierigkeiten beim reinen Adressabgleich haben Sie schon rein deshalb, weil Sie nicht wissen ob Frau "Inge Müller" in der "Beispielstraße 18" die Ehefrau des Herrn "Gerhard Müller" in der "Beispielstr. 18" ist oder ob diese rein zufällig im selben Mehrfamilienhaus wohnen und natürlich - das zeigt die Erfahrung - dass viele Personen nicht mal ihre eigene Straße korrekt schreiben können. (vgl. Erfurter Straße / Bruchweilerstraße)
@Karsten:
Sobald sich aber, wie in deinem Fall ein Bösewicht auf genau deinen Captcha- oder Adresserkennungsalgorithmus eingeschossen hat, wirst Du immer den Kürzeren ziehen...
Ich glaube ja nicht, dass es um das Erkennen von Bösewichten geht.
Wenn aber doch, so hilft hier vielleicht ein Ansatz der auf den ersten Blick unüblich erscheint: Über das Einbinden der Google-MAPS-API kannnst du die Adressen "verorten". Google hilft da schon recht gut beim Abgleich von verschiedenen Eingaben. So kannst du über die Kombination "Ähnlichkeit von Namen" und "Nähe der geografischen Koordinaten" deiner Adresse die Wahrscheinlichkeit der Übereinstimmung relativ gut festlegen.
Schöne Grüße aus dem Saarland.
Michael Gillen
- 25 Mar 2008, 7:53 pm
-
Karsten KrausThe company name is only visible to registered members.Re^3: Adressvergleich
Hallo Michael,
Ich glaube ja nicht, dass es um das Erkennen von Bösewichten geht.
Mit "Bösewicht" meinte ich diejenigen Menschen mit begrenzten Humor, die für ihre ungebliebten Nachbarn fünf Kilo Reisekataloge bei Tilmans Kunden bestellen...
So diese nur mal eben aus einer Laune raus Spaß am Papier haben ist ein Lösungsansatz wie von Jens und mir beschrieben zwar u.U. recht aufwendig aber wirksam. Wenn man dem Nachbar aber nun wirklich gaanz dringend die Altpapiertonne füllen bzw. diesen in Urlaub verschicken will, dann mogelt sich auch der dumpfeste Mensch an so einem Algorithmus vorbei bzw. macht dem Support bei Tilmanns Kunden das Leben recht anstrengend...
Gruß
Karsten
- 25 Mar 2008, 11:15 pm
-
Tilman Pietzsch Premium MemberThe company name is only visible to registered members.Re^4: Adressvergleich
Hallo Karsten,
Du hast schon recht: Es geht zum einen um die Erkennung von Bösewichten. Zum anderen aber auch darum, die innerhalb von 3 Jahren auf rund 250.000 Adresseinträge angewachsene SQL-Tabelle ein bisschen im Zaum zu halten und das Adressmanagement dadurch besser kontrollieren zu können.
Die Telefonnummer ist übrigens kein Pflichtfeld, da sich die Zielgruppe verständlicherweise mit der Angabe schwer tut. Mir geht es auch primär darum lieber erstmal den bestmöglichen Aufwand in die Programmierung zu stecken. Aus Gründen der Usability wäre eine "Belastung" der Kunden der letztmögliche Ausweg, den es zu vermeiden gilt. Schließlich gehen solche Lösungsansätze ja immer auf Kosten der Bestell-Laune.
Prüfsumme klingt gut, daran habe ich noch gar nicht gedacht. Natürlich kann man in einigen Fällen keine hundertprozentige Sicherheit in der Übereinstimmung erwarten. Dass es immer Einzefälle geben wird, wo manuell entschieden werden muss, ist mir völlig klar. Hier wird im Zweifelsfall halt einfach ein neuer Adresseintrag erstellt werden. Aber wenn 9 von 10 überflüssigen Adresseinträgen auf diese Weise verhindert werden, ist ja schonmal eine große Menge erreicht. Ich denke, das ist ein realistisches Ziel.
Mein momentaner Knackpunkt ist der Name. Adressen (respektive: Straße, Hnr, PLZ, Ort) kann man mit logischen Denkweisen auf Übereinstimmung prüfen:
- Bei gleicher PLZ ist der Ortsname belanglos
- Straßennamen müssen vor dem Vergleich gleichgestellt werden (straße zu str., ö zu oe, usw.)
- Leer- und Sonderzeichen bei Hausnummern müssen vor dem Vergleich entfernt werden (Bsp: 10a, 10 a, 10/a)
Bei den Namen sieht es schwieriger aus, insbesondere bei dem Vornamen. Hier sehe ich Adressen mit vielen Mietparteien wie Hochhäuser als Problem. Selbst zwei Peter Meier in einem Hochhaus wären denkbar. Diese dürften sich vermutlich durch irgendwelche Namenszusätze unterscheiden. Demnach müsste ich Vor- und Nachnamen auf voller Zeichenlänge vergleichen und dürfte bestenfalls Leer- oder Sonderzeichen streichen. Mit Soundex schaffe ich mir zusätzlich das Problem mit Herrn Maier und Herrn Meier in einem Haus.
Der "professionelle Bösewicht" wird zwar immer einen Weg finden, doch nach Sichtung der Problemfälle komme ich zu dem Schluß, dass die meisten eher mit sehr plumpen und wenig geistreichen Ideen eine Sperrung umgehen. Einfache Prüfmethoden dürften somit schon einen beträchtlichen Teil der Bösewichte abhalten.
Grüße, Tilman Pietzsch
- 26 Mar 2008, 12:29 am
-
Markus ZellerThe company name is only visible to registered members.Re: Adressvergleich
Ähnlichkeiten zu finden ist sicherlich nicht einfach.
Wie wäre es mit einer Soundex-Suche?
Dort werden ähnlich klingende Strings verglichen.
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html...
- 26 Mar 2008, 07:39 am
-
Post visible to registered members
-
Markus ZellerThe company name is only visible to registered members.Re^3: Adressvergleich
* bitte nicht hauen *
Man könnte auch fies sein und zusätzlich noch die Passwörter (als Hash natürlich!!) vergleichen...
Und eine Sicherheitsfrage und die Antwort dazu im Falle des Passwortverlusts...
Meistens nehmen die Menschen überall das Gleiche...
- 26 Mar 2008, 10:00 am
-
Post visible to registered members
