Il y a une question similaire, mais pas concernant les bibliothèques C # que je peux utiliser dans mon code source.
Merci à tous pour votre aide.
J'ai déjà vu lucene, mais j'ai besoin de quelque chose de plus facile pour rechercher des chaînes similaires et sans la surcharge de la partie d'indexation.
La réponse que j'ai notée a deux algorithmes très faciles, et l'un utilise aussi LINQ, donc c'est parfait.
Implémentation de la distance Levenshtein:
J'ai un projet .NET 1.1 dans lequel j'utilise ce dernier. C'est simpliste, mais fonctionne parfaitement pour ce dont j'ai besoin. D'après ce dont je me souviens, il fallait un peu de peaufinage, mais rien de ce qui n'était pas évident.
vous pouvez également consulter la bibliothèque très impressionnante intitulée Sam's String Metrics http://sourceforge.net/projects/simmetrics/files/ . cela comprend une multitude d'algorithmes.
Ils ne sont pas ma propre invention, mais ils sont mes favoris et je viens de bloguer à leur sujet et j'ai publié mes propres versions modifiées de Dice Coefficient, Levenshtein Distance, Longest Common Subsequence et Double Metaphone dans un article de blog intitulé Four Functions pour trouver des correspondances de chaînes floues dans les extensions C # .
Avez-vous jeté un coup d'œil à Lucene.net ? Il s'agit d'un port de l'API Java Lucene Search Engine vers la plate-forme .Net. Cette bibliothèque offre de nombreuses fonctionnalités de recherche. J'ai joué avec elle il y a environ un an, alors ne le faites pas prendre ma suggestion comme basée sur des tonnes d'expérience. Je l'ai vu dans le livre Windows Developer Power Tools et l'ai pris pour un essai routier. Vous pourriez regarder à travers leur documentation API pour voir si elle offre quelque chose comme la recherche floue que vous recherchez.
Ce document de projet de code a une fonction de similitude de chaîne utilisant la distance Levenshtein .
Il existe l'algorithme de distance Levenshtein suivant qui attribue une valeur à la similitude de deux chaînes (enfin, la différence en fait), qui pourrait être utilisée pour s'appuyer sur: http://www.merriampark.com/ldcsharp.htm
J'ai utilisé "Ternary Search Tree Dictionary en C #" ( http://www.codeproject.com/KB/recipes/tst.aspx ) pour rechercher des chaînes similaires.
Cordialement, Patricio
Beagle Project pour Linux est écrit en c # (mono) et est un outil de recherche de type google-desktop. Il peut contenir du code pour ce type de correspondance de chaînes.
Si je me souviens bien, il utilise la bibliothèque Lucene pour rechercher et récupérer des données. Peut-être que cela peut aussi être utile pour votre projet.