So habe ich eine Spalte in einer Tabelle, die eine Zeichenfolge Werte enthält (Schlüsselwörter aus einem Tool von Drittanbietern befüllt). Ich arbeite an einem automatisierten Tool, um Cluster ähnlicher Werte zu identifizieren, die wahrscheinlich auf einen einzelnen Wert normalisiert werden könnten. Zum Beispiel "Feuerwehrmänner"/"Feuerwehrmann", "Isotop"/"Asotope" oder "Hunde"/"Eckzähne".Performante Techniken zum Finden ähnlicher Werte in SQL?
Ein Ansatz, der den Levenshtein-Abstand berechnet, scheint ideal zu sein, abgesehen von der Tatsache, dass er zu viele String-Manipulationen/Vergleiche beinhaltet und SQL-Indizes wahrscheinlich schlecht nutzen würde.
Ich habe inkrementelle Gruppierung von den linken (X) Zeichen der Spalte berücksichtigt, was eine nicht so schlechte Möglichkeit ist, den Index zu maximieren, aber dieser Ansatz ist wirklich nur wirksam beim Finden von Wörtern mit Unterschieden Ende des Wortes.
Hat jemand gute Ideen, um dieses Problem in SQL effizient zu lösen?
Hinweis: Ich weiß, diese Frage ist sehr ähnlich (Finding how similar two strings are), aber die Unterscheidung hier ist die Notwendigkeit, dies effizient in SQL zu tun.
Irgendwelche Erfahrungen darüber, wie gut Soundex mehrere Versionen von Wörtern löst? Klingt nach "Feuerwehrmännern"/"Feuerwehrmann", aber vielleicht nicht nach "Hunde". – JohnFx