Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man das Dilemma lösen, menschliche Namen in MySQL zu speichern und sowohl die Unterscheidbarkeit als auch die Suche nach ähnlichen Namen beizubehalten?

Was nützlich ist, ist, wenn Sie den vollständigen Namen in Komponenten "Namenswörter" zerlegen und eine phonetische Kodierung (Metaphon oder eine der vielen anderen Möglichkeiten) für jeden von ihnen speichern können. Sie brauchen jedoch nur die Vorstellung von Namenswörtern, ohne sie speziell als erstes, mittleres oder letztes zu kategorisieren, was in Ordnung ist, da diese Kategorien sowieso nicht gut zwischen Kulturen funktionieren). Aber Sie können Informationen zur Positionsreihenfolge später im Ranking verwenden, wenn Sie möchten, damit die Suche nach „Paul Carl“ besser zu „Paul Karl“ passt als nach „Carl Paul“. Sie müssen sich über mehrdeutige Satzzeichen im Klaren sein, die möglicherweise das Speichern mehrerer Versionen einiger Namenswörter erfordern. Zum Beispiel würde Bre-Anna Heim in die Namenswörter „bre“, „anna“, „breanna“ und „heim“ zerlegt. Manchmal ist der Bindestrich irrelevant wie Bre-Anna, aber manchmal nicht wie in Sally-June". Bre-Anna verwendet niemals nur Bre oder Anna, aber Sally-June verwendet manchmal einfach Sally oder nur June. Es ist also schwer zu wissen, was decken beide Möglichkeiten ab.

Sie können Ihre Abfrage dagegen schreiben, indem Sie den vollständigen Namen, nach dem Sie suchen, auf ähnliche Weise zerlegen und phonetisch codieren. Ihre Abfrage kann beispielsweise die vollständigen Namen zurückgeben, die zwei oder mehr phonetische Übereinstimmungen des Komponentennamens haben (oder eine, wenn es nur einen Namen in der Suche oder der Quelle gibt). Dies gibt Ihnen eine Teilmenge vollständiger Namen, die Sie weiter berücksichtigen können. Sie könnten eine einfache Rangfolge erstellen oder sogar so etwas wie einen Entfernungsabgleichsalgorithmus für diese Teilmenge durchführen, was zu rechenintensiv wäre, um dies mit der gesamten Million Namen zu tun. Wenn ich Entfernungsabgleich sage, spreche ich von Online-Algorithmen wie Levenshtein-Entfernung und dergleichen.

(Bearbeiten) Der Grund dafür ist der Umgang mit Fällen wie dem folgenden Namen:Maria de los Angeles Gomez-Rodriguez. Eine Dateneingabeperson kann nur Maria Gomez eingeben. Ein anderer könnte Maria Gomez Rodriguez betreten. Ein weiterer könnte in Maria Angeles Rodrigus eintreten.