Sto lavorando su un DB sql server 2008 e su asp.net mvc web E-commerce.il modo più efficiente per raggruppare i risultati di ricerca per similarità delle stringhe
Ho diversi utenti che alimentano i loro prodotti al DB e voglio confrontare i prezzi dei prodotti con nomi simili. So che la corrispondenza delle stringhe è specifica del dominio, ma ho ancora bisogno della migliore soluzione generica.
Qual è il modo più efficace per raggruppare i risultati della ricerca? Devo confrontare tutti i record in modo ricorsivo usando l'algoritmo Levenshtien Distance? Devo farlo nel DB o nel codice? Esiste un modo per implementare il raggruppamento Fuzzy SSIS in tempo reale per questa attività? Esiste un modo efficace per farlo usando la ricerca di testo libero Sql server 2008?
Modifica 1: E l'analisi del grafico di rete. Se definirò una matrice usando l'algoritmo Levenshtien Distance, potrei usare un algoritmo di clustering (ad esempio: clauset newman moore) e gruppi separati che non hanno un percorso fonologico tra di loro. Ho allegato Nick Johnson (vedi commento) cane gatto per esempio (le linee rosse sono i grappoli) - e usando il clauset newman moore sto creando 2 diversi cluster e gatti separati dai cani.
Cosa ne pensi?
Lo farei nel DB, vedere questo thread: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=66781 e questo: http://stackoverflow.com/questions/560709/levenshtein -distanza-in-t-sql sulla distanza Levenshtein alg. – Magnus
Questo è difficile - come raggrupperesti i prodotti "gatto", "auto", "bar", "borsa", "torbiera", "cane"? Ognuno è solo distanza 1 l'uno dall'altro, ma 'gatto' e 'cane' non condividono somiglianze. –
Quindi qual è l'alternativa? Forse una specie di dizionario semantico? qualche altra idea? – Gidon