Recherche floue à l'aide de C# .NET
  • Vous ne savez pas quelle couleur ou quelle orthographe des couleurs a été utilisée dans le document.
  • Je recherche « John », mais cela aurait pu être orthographié comme « Jon » ou peut-être « Jhon ».
  • Localisation de « USA » lorsque l’utilisateur saisit « USA ».
  • Le mot ou la phrase que vous recherchez pourrait contenir une « erreur », oups, c’est encore une « erreur ».

Voici la recherche floue. La recherche floue vous permet de trouver des correspondances approximatives plutôt que des correspondances exactes dans les données, ce qui permet une flexibilité dans les requêtes de recherche. Ceci est particulièrement utile dans les scénarios comportant des fautes de frappe, des fautes d’orthographe ou des variations dans les données. Cet article montre comment effectuer par programmation une recherche floue dans plusieurs documents dans des dossiers à l’aide de C#.

Bibliothèque de recherche floue C#

Pour la recherche floue, nous utiliserons l’API GroupDocs.Search for .NET. Cela permet un certain degré de tolérance dans l’orthographe, ce qui le rend efficace pour s’adapter aux variations linguistiques régionales comme celles entre l’anglais britannique et américain.

Cette bibliothèque nous permet de rechercher par programmation du texte dans un large éventail de formats de fichiers, tels que des documents Word (DOC, DOCX), des feuilles de calcul (XLS, XLSX), des présentations (PPT, PPTX), des fichiers PDF, des balises (HTML, XML), Markdown (MD), livres électroniques (EPUB, CHM, FB2), messages électroniques (MSG, EML), documents OneNote et archives ZIP.

Pour connaître tous les types de fichiers avec lesquels vous pouvez travailler, consultez la documentation.

Vous pouvez choisir d’obtenir les DLL ou le programme d’installation MSI à partir de la section de téléchargement ou d’ajouter l’API à votre programme .NET à l’aide de NuGet.

Faisons une recherche floue dans les fichiers en utilisant C#

Suivez ces étapes pour effectuer une recherche floue dans plusieurs fichiers de différents formats de fichiers dans des dossiers à l’aide de C# :

  • Créez un Index en fournissant un chemin de dossier.
  • Ajoutez le chemin du dossier parent du répertoire de recherche à l’index créé.
  • Définissez la requête de recherche.
  • Activez la recherche floue en activant l’option.
  • Définissez le niveau de similarité dans l’algorithme flou selon vos besoins.
  • Exécutez la recherche à l’aide de la méthode Search pour obtenir les résultats de la recherche.
  • Désormais, vous pouvez parcourir SearchResults pour créer ou imprimer la sortie à votre guise.

La recherche floue dans le code C# mentionné ci-dessous trouve les correspondances approximatives de la requête donnée dans tous les fichiers de tous les sous-dossiers avec une tolérance d’erreur de 20 % dans l’orthographe.

// Recherche floue de plusieurs fichiers dans plusieurs dossiers à l'aide de C#

// Créer un dossier d'index et y ajouter le dossier du document
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);

string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);

Ici, le niveau de similarité est fixé à 0,8, soit une correspondance de 80 %, ce qui correspond à une tolérance d’erreur de 20 %. Vous pouvez ajuster le niveau de tolérance en modifiant le niveau de similarité dans le code.

Vous trouverez ci-dessous les résultats de recherche flous que vous pouvez obtenir à partir du code ci-dessus. C’est assez simple, cependant, le code d’impression est également disponible plus loin dans cet article.

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

Impression des résultats de recherche

Le code C# suivant propose deux manières de présenter vos résultats de recherche.

  • Mettez en surbrillance toutes les correspondances approximatives.
  • Imprimez les résultats dans un format lisible et analysable
// Mettre en surbrillance et imprimer les résultats de la recherche pour tous les documents à l'aide de C#
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // Impression des termes trouvés
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}

Obtenir une licence gratuite ou un essai gratuit

License gratuite

Obtenez gratuitement une licence temporaire pour explorer cette bibliothèque sans contraintes.

Essai gratuit

Vous pouvez télécharger l’essai gratuit depuis la section téléchargements.

API .NET pour la recherche dans les fichiers et dossiers

Conclusion

Dans cet article, nous avons examiné l’approche programmatique C# de la magie de la recherche floue pour trouver tous les mots correspondants approximatifs mais avec un certain degré de tolérance aux erreurs. Cette fonctionnalité rend la recherche floue efficace pour prendre en compte les variations linguistiques régionales telles que celles entre l’anglais britannique et américain, les fautes de frappe dans le texte, les variations de nom et la correspondance phonétique.

Pour des détails complets sur l’API, il est conseillé aux lecteurs de se référer à la documentation.

Toute question ou discussion supplémentaire peut être adressée au forum.


Voir également