Hay una pregunta similar, pero no con respecto a las bibliotecas de C # que puedo usar en mi código fuente.
Gracias por toda tu ayuda.
Ya he visto lucene, pero necesito algo más fácil para buscar cadenas similares y sin la sobrecarga de la parte de indexación.
La respuesta que marqué tiene dos algoritmos muy fáciles, y uno también usa LINQ, así que es perfecto.
Implementación a distancia de Levenshtein:
Tengo un proyecto .NET 1.1 en el que utilizo este último. Es simplista, pero funciona perfectamente para lo que necesito. Por lo que recuerdo, necesitaba un poco de ajuste, pero nada que no fuera obvio.
también puede ver la impresionante biblioteca titulada Sam’s String Metrics http://sourceforge.net/projects/simmetrics/files/ . esto incluye una gran cantidad de algoritmos.
No son mi propia invención, pero son mis favoritos y acabo de escribir sobre ellos y publiqué mis propias versiones modificadas de Coeficiente de dados, distancia de Levenshtein, subsecuencia común más larga y doble metafonía en una publicación de blog llamada Cuatro funciones para encontrar secuencias borrosas. Coincide con las extensiones C # .
¿Has echado un vistazo a Lucene.net ? Es un puerto de la API del motor de búsqueda Java Lucene para la plataforma .Net. Esa biblioteca ofrece mucha funcionalidad de búsqueda. Jugué con eso hace un año o así, así que no tomes mi sugerencia en base a toneladas de experiencia. Lo vi en el libro Windows Developer Power Tools y lo tomé para una prueba de manejo. Puede consultar su documentación API para ver si ofrece algo parecido a la búsqueda difusa que busca.
Echa un vistazo aquí.
Definitivamente vale la pena echar un vistazo por ti mismo.
Existe el siguiente algoritmo de distancia de Levenshtein que asigna un valor a la similitud de dos cadenas (bueno, la diferencia en realidad), que podría usarse para construir sobre: http://www.merriampark.com/ldcsharp.htm
El Proyecto Beagle para Linux está escrito en c # (mono) y es una herramienta de búsqueda de escritorio de google. Puede tener algún código para este tipo de coincidencia de cadenas.
Si recuerdo correctamente, usa la biblioteca Lucene para buscar y recuperar datos. Tal vez eso también puede ser útil para su proyecto.
He usado “Diccionario de árbol de búsqueda ternario en C #” ( http://www.codeproject.com/KB/recipes/tst.aspx ) para buscar cadenas similares.
Saludos, Patricio