Wir haben eine webbasierte Anwendung für den Namensabgleich entwickelt. Dabei werden Namen in Teile zerlegt, und der Soundex- Wert jedes Teils wird in einer Datenbank gespeichert. Die Levenshtein-Abstandsmetrik wird verwendet, um die prozentuale Anpassung des Tons sowie die Rechtschreibung für einen bestimmten Namen anzuwenden.
Zur Laufzeit laden wir alle Datensätze in den Speicher und wenden den Levenshtein-Abstand auf alle Soundex-Werte und die Schreibweise aller Teile aller Namen an.
Das hat anfangs gut funktioniert, weil es maximal 20.000 Namen gab, aber jetzt hat einer unserer Kunden 30 Millionen Namen. Das Laden dieser riesigen Liste in den Speicher für jede Anforderung und das Anwenden dieser Art des Abgleichs ist ein erbärmlicher Ansatz, der viel Speicher und Ausführungszeit benötigt.
Wir suchen nach Vorschlägen für die Suche in einer Datenbank mit 30 Millionen Datensätzen oder mehr in naher Zukunft mit prozentualer Übereinstimmung von Ton und Rechtschreibung.
Kernfunktionalität
Der Endbenutzer gibt den zu vergleichenden Namen und den Mindestprozentsatz ein. Wir sollen alle Namen in der Datenbank anzeigen, für die ein Teil des Namens mit einem Teil des angegebenen Namens bis zum angegebenen Prozentsatz übereinstimmt. Der vollständige Name muss nicht übereinstimmen. Jeder Teil, der bis zum Prozentsatz übereinstimmt, ist ein Erfolg. Zum Beispiel.
Given Name: Helen Hunt
Name in DB: Holly Hunter
Beide Teile beider Namen stimmen nicht genau überein, aber bis zu einem gewissen Grad nehmen wir 80% an. Wenn der Benutzer also 80% eingibt, muss der Name in der Datenbank als übereinstimmender Name angezeigt werden.