Ich habe meine Antwort bereits in einer anderen Frage zur Verfügung gestellt.
https://stackoverflow.com/a/30120166/2282794
Ich habe auf wirklich großen Maßstab System mit ähnlichen Namen passenden Anforderungen gearbeitet, die Sie gesprochen haben. Namensabgleich ist nicht sehr einfach und die Reihenfolge der Vor- und Nachnamen kann unterschiedlich sein. Einfache Fuzzy-Namensvergleichsalgorithmen scheitern in solchen Szenarien kläglich.
Wenn wir nur über die Approximate String Matching-Algorithmen sprechen wollen, dann gibt es viele. Wenige von ihnen sind: Jaro-Winkler, Edit Entfernung (Levenshtein), Jaccard Ähnlichkeit, Soundex/Phonetik basierte Algorithmen etc. Ein einfaches googeln würde uns alle Details geben. Sie können alle von ihnen in C#
implementieren Ironie ist, sie arbeiten, während Sie versuchen, zwei gegebenen Eingabezeichenfolgen übereinstimmen. Okay, theoretisch und um die Art und Weise zu demonstrieren funktioniert fuzzy oder approximative String-Matching.
Aber grob untertriebener Punkt ist, wie wir das gleiche in Produktionseinstellungen verwenden. Nicht alle, die ich kenne, die nach einem ungefähren String-Matching-Algorithmus suchten, wussten, wie sie dasselbe in der Produktionsumgebung lösen konnten.
Ich könnte gerade über Lucene gesprochen haben, die spezifisch für Java ist, aber es gibt auch Lucene für .Net.
https://lucenenet.apache.org/
Ich glaube, ich werde den Punkt alle Zeichen entfernen und dann den levenshtein Abstand danach verwenden. Nur eine Anmerkung, ich fand einen anderen Algorithmus, der ähnlich ist, aber schneller als Levenshtein, der Typ den Algorithmus sift3 nennen. Sehr interessant. – Max