2011-03-26 14 views
8

Duplicar posible:
Are there any Fuzzy Search or String Similarity Functions libraries written for C#?¿Cómo comprobar si dos cadenas son una coincidencia parcial en C#?

Estoy creando una aplicación que va a excepción de la entrada de usuario de una canción o artista o álbum nombre y luego se verá a través de una matriz de cadenas o ArrayList para cualquier posibles coincidencias.

Las sugerencias automáticas se calcularán en función del porcentaje de coincidencia.

Por ejemplo

Si los tipos de usuario enlace PRK debe encontrar Linkin Park o Link 80 o Link Wray pero el porcentaje partido será diferente para todos

asumir que la colección sólo buscará los nombres de artista en artista Colección y nombre de la canción en la colección de canciones.

(Los porcentajes son sólo para explicación)

Linkin Park - 98% 
Link Wray -82% 
Link 80 - 62% 

solución no tiene por qué ser de código C#, cualquier código expresiones regulares o pseudo será bueno, pero debería poder aplicarse en C#.

+1

Duplicado de http://stackoverflow.com/questions/83777/are-there-any-fuzzy-search-or-string-similarity-functions-libraries-written-for-c –

Respuesta

11

Normalmente, para esto se utiliza una implementación de Levenshtein distance, también llamada distancia de edición. Esto encontrará coincidencias basadas en el número mínimo de ediciones necesarias para transformar una cadena en la otra, contar todas las inserciones, eliminaciones o sustituciones de un solo carácter como una medida para el "costo": los candidatos son cadenas que tienen el costo mínimo .

Aquí hay un enlace a an article con una implementación genérica en C#.

+1

Bien, pero prepárese para el bien Enfriamiento de CPU en un gran conjunto de datos :) – Ingo

Cuestiones relacionadas