Estoy trabajando en un servidor sql 2008 DB y asp.net mvc web E-commerce app.manera más eficiente de agrupar resultados de búsqueda por similitud de cadena
Tengo diferentes usuarios que alimentan sus productos a la base de datos, y quiero comparar los precios de productos con nombres similares. Sé que la coincidencia de cadenas es específica del dominio, pero aún necesito la mejor solución genérica.
¿Cuál es la manera más eficiente de agrupar los resultados de búsqueda? ¿Debo comparar cada uno de los registros recursivamente usando el algoritmo Levenshtien Distance? ¿Debo hacerlo en la base de datos o en el código? ¿Hay alguna manera de implementar la agrupación difusa SSIS en tiempo real para esta tarea? ¿Existe una forma eficiente de hacerlo utilizando la búsqueda de texto libre del servidor Sql 2008?
Editar 1: ¿Qué pasa con el análisis de red de gráficos. Si voy a definir una matriz usando el algoritmo Levenshtien Distance, podría usar un algoritmo de agrupamiento (por ejemplo: clauset newman moore) y separar los grupos que no tienen una ruta fonológica entre ellos. He adjuntado a Nick Johnson (ver comentario) cat-dog por ejemplo (las líneas rojas son los clusters) y usando el clauset newman moore estoy creando 2 clusters diferentes y separando gatos de perros.
¿Qué opinas?
Lo haría en la base de datos, vea este hilo: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=66781 y esto: http://stackoverflow.com/questions/560709/levenshtein -distance-in-t-sql en la distancia Levenshtein alg. – Magnus
Esto es difícil: ¿cómo agruparías los productos 'gato', 'coche', 'bar', 'bolsa', 'pantano', 'perro'? Cada uno está a solo una distancia uno del otro, pero 'gato' y 'perro' no comparten similitudes. –
Entonces, ¿cuál es la alternativa? ¿Tal vez algún tipo de diccionario semántico? cualquier otra idea? – Gidon