HILFE! Suchfunktion->unmöglich?

Hi,

hab ein ziemlich dringendes Problem und bitte um eine Bewertung. Lässt sich das überhaupt realisieren, wenn ja mit welchem Zeitaufwand und mit welchem Ansatz. Bin auch dankbar für allg. Anmerkungen.

Es soll eine Suchefunktion mit Cold Fusion erstellt werden, die eine MySql Datenbank nach Namen / Vornamen durchsucht.

Allgemeine Anforderungen:

  1. Das Datenaufkommen beträgt etwa 20000 Personen.
  2. Die Namen werden vorrangig in Landessprache erfasst.
  3. Die Daten (Namen) werden von Usern aus allen Ländern der Welt eingegeben, die alle Ihre länderspezifischen Zeichen verwenden.
  4. Die Daten werden von Usern aus allen Ländern der Erde gesucht, die wiederum ihre landesspezifischen Tastaturen verwenden.
  5. Die Suche darf nicht länger als 5 Sekunden dauern
  6. Die Anzahl der Treffer sollte sich in Grenzen halten
  7. Es sollten auch Fehler bei der Eingabe des Suchbegriffes als auch Erfassungsfehler berücksichtigt werden, sodass diese Personen auch gefunden werden.

Geforderte Vorgehensweise

  1. Wird ein Suchbegriff eingegeben, soll dieser einen „Ersetzen“ Vorgang durchlaufen. Dabei sollen alle vorkommenden Zeichen, die man irgendwie auf eine andere Art und Weise schreiben oder sprechen kann bzw ähnlich aussehen auf alle möglichen Arten umgewandelt werden. Z.b. a durch ä, ae, á, a mit div. Punkten / Strichen usw, alleine das a kann man durch 15 andere Zeichen ersetzen … was es halt so alles gibt, das gleiche gilt für f / v … wenn einer nach Fogel sucht muss der Vogel gefunden werden.
  2. Doppelkonsonanten müssen beachtet werden, d.h. wenn einer nach Müler sucht muss auch der Müller gefunden werden
  3. Füllzeichen:
    . bsp. „N´Diaye“ oder „NDiaye“. egal, ob in der suche oder in der anlage mit apostrophen gearbeitet wird, es darf keine rolle spielen. es ist so als ob die nicht da wären. gilt eigentlich für alle komischen füllzeichen, „Karl-Heinz“ und „Karlheinz“.
  4. Es solle eine Quote berechnet werden („Zu wie viel Prozent stimmt der gefundene Datensatz mit dem Suchbegriff überein.“)
  5. Gleichbehandlung von Name und Vorname, falls umgedreht erfasst.
  6. Erster Buchstabe ist wichtig: z.b. bei Kahn darf nicht Bokahn kommen.

Fazit: Egal wie falsch man den Namen eingibt und welche Zeichen gerade auf der Tastatur zur Verfügung stehen, es soll die richtige Person gefunden werden.

Anderer Ansatz?

  1. Man grenzt den Bereich der in Frage kommenden Datensätze ein, z.b. Anzahl der Zeichen (Datensatz darf nur 2/3/4 Zeichen länger / kürzer sein als der Suchbegriff, abhängig von Länge des Suchbegriffs); und / oder erstes Zeichen, das dann durch Sonderzeichen ersertzt wird.
  2. Die übrigen Datensätze durchlaufen ein Punktesystem
  • für jedes vorkommende Zeichen, das übereinstimmt 1 Punkt
  • für eine Folge von 2 Zeichen 1 Punkt
  • für eine Folge von 3 Zeichen 1 Punkt
  • bei genauer Übereinstimmung 2 Punkte
  1. Am ende werden die 80% mit den meisten Punkten ausgegeben. Dabei funktioniert es dann in „Namensbereichen,“, in denen nur wenige Namen sind besser, und wenn es halt sehr viele ähnliche namen gibt schlechter.

Ich wäre für eine rasche Antwort / Meinung Dankbar, da ich ziemlich unter Zeitdruck stehe … auch wenn’s nur ein paar Zeilen sind.

Danke

du berechnest den levenshteinabstand jeweils zwischen suchwort und vn bzw. nn udn baust darus dein ranking

levenshteinabstand=?
vn=?
nn=?

levenshteinabstand=?

gibt an, wieviele buchstaben man ausstauschen/anhaengen/abschneiden muss, um aus einem wort ein adneres zu machen, da gibt es aber im google massig material… ist ein gutes mass fuer die aehnlichkeit von worten…

vn=?

vorname

nn=?

nachname

zusaetzlich koenntest du auch deine worte in eine normalform ueberfuehren, das wuerde es wohl bei deinen vilen unterschiedlichen sprachen einfacher machen…