Ich arbeite auf einem SQL-Server 2008 DB und asp.net mvc Web E-Commerce-App.effizienteste Möglichkeit, Suchergebnisse nach String-Ähnlichkeit zu gruppieren
Ich habe verschiedene Benutzer, die ihre Produkte der DB zuführen, und ich möchte die Preise von Produkten mit ähnlichen Namen vergleichen. Ich weiß, dass String-Matching Domain-spezifisch ist, aber ich brauche immer noch die beste generische Lösung.
Wie gruppieren Sie die Suchergebnisse am effizientesten? Sollte ich jeden der Datensätze rekursiv mit dem Levenshtien-Distanzalgorithmus vergleichen? Sollte ich es in der DB oder im Code tun? Gibt es eine Möglichkeit, SSIS Fuzzy Grouping in Echtzeit für diese Aufgabe zu implementieren? Gibt es eine effiziente Möglichkeit, dies mit der Sql Server 2008 Freitextsuche zu tun?
Bearbeiten 1: Was ist mit Netzwerk-Grafik-Analyse. Wenn ich eine Matrix mit dem Levenshtien-Distanz-Algorithmus definiere, könnte ich einen Clustering-Algorithmus (zum Beispiel: clauset newman moore) und separate Gruppen verwenden, die keinen phonologischen Pfad zwischen ihnen haben. Ich habe Nick Johnson (siehe Kommentar) als Katzenhund zum Beispiel angehängt (die roten Linien sind die Cluster) - und mit der Klausel newman moore erstelle ich 2 verschiedene Cluster und trenne Katzen von Hunden.
Was denkst du?
Ich würde es in der DB tun, siehe diesen Thread: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=66781 und das: http://StackOverflow.com/Questions/560709/levenshtein -Abstand auf der Levenshtein-Distanz alg. – Magnus
Das ist hart - wie würden Sie die Produkte "Katze", "Auto", "Bar", "Tasche", "Moor", "Hund" gruppieren? Jeder ist nur Abstand 1 voneinander, aber "Katze" und "Hund" teilen keine Ähnlichkeiten. –
Was ist die Alternative? Vielleicht eine Art semantisches Wörterbuch? irgendwelche anderen Ideen? – Gidon