Vous êtes-vous déjà demandé comment rechercher facilement dans de nombreux fichiers ou relever le défi de la recherche dans des fichiers dans différents dossiers ? Cet article contient les réponses que vous recherchez. Plongeons dans le monde de la recherche de texte et explorons comment rechercher divers textes ou expressions dans différents fichiers dans divers dossiers à l’aide de C#.

API C# pour analyser du texte dans des fichiers et des dossiers

Nous allons maintenant utiliser l’API GroupDocs.Search for .NET pour explorer de nombreux textes dans des fichiers de divers formats dans des dossiers. Cette bibliothèque nous permet d’analyser systématiquement du texte dans une large gamme de formats de fichiers, tels que des documents Word, des feuilles de calcul, des présentations, des fichiers PDF, des fichiers de balisage, des livres électroniques, des messages électroniques, des documents One Note et des archives ZIP. Pour une liste détaillée des formats de fichiers pris en charge, reportez-vous à la documentation complète.

Vous avez la possibilité de récupérer les DLL ou le programme d’installation MSI à partir de la section téléchargements, ou d’installer l’API dans votre application .NET à l’aide de NuGet.

PM> Install-Package GroupDocs.Search

Recherche de plusieurs textes dans des fichiers dans des dossiers à l’aide de C#

Suivez ces étapes pour effectuer une recherche de texte dans plusieurs fichiers de plusieurs dossiers à l’aide de C# et générer des fichiers de sortie HTML en surbrillance pour chaque document trouvé.

  • Créez un objet Index avec le chemin du dossier d’index spécifié.
  • Indexez le dossier de documents parent à l’aide de la méthode Add.
  • Définissez une requête de recherche avec plusieurs termes ou expressions.
  • Exécutez l’analyse de texte à l’aide de la méthode de recherche et stockez les résultats.
  • Parcourez les résultats de la recherche :
    • Récupérez chaque document trouvé à l’aide de la méthode GetFoundDocument.
    • Récupérez ou imprimez toutes les informations de fichier pour le document trouvé.
    • Configurez un OutputAdapter pour le format et le chemin souhaités.
    • Créez un Surligneur pour le document.
    • Mettez en surbrillance et affichez les résultats de la recherche dans un fichier HTML à l’aide de la méthode Highlight.
// Recherche de texte dans plusieurs fichiers de différents formats de fichiers dans plusieurs dossiers à l'aide de C#

// Création d'un index et indexation des documents à partir du dossier spécifié
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Rechercher des documents contenant le mot « eau » ou « non » ou l'expression « Lorem ipsum »
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Impression du résultat
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Mettez en surbrillance les résultats de la recherche
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences
}

Le code ci-dessus vous permet de rechercher des textes particuliers dans plusieurs fichiers et de créer des fichiers de sortie HTML en surbrillance pour chaque document trouvé.

Résultats de la recherche de texte en surbrillance au format HTML

Impression des résultats de la recherche de texte

À partir du résultat de la requête de recherche, vous pouvez extraire davantage d’informations sur les documents trouvés.

// Impression du résultat
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\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" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Impression des phrases trouvées
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

Ce qui suit sera le résultat de l’impression des résultats de recherche ci-dessus obtenus à partir des fichiers DOCX, PDF et TXT :

Documents: 3
Total occurrences: 141
	Document: Lorem ipsum.docx
	Occurrences: 101
		Field: filename
		Occurrences: 101
			lorem ipsum		1
		Field: content
		Occurrences: 101
			non			94
			lorem ipsum		6
	Document: Lorem ipsum.pdf
	Occurrences: 1
		Field: filename
		Occurrences: 1
			lorem ipsum		1
	Document: English.txt
	Occurrences: 39
		Field: content
		Occurrences: 39
			water			39

Code complet

Voici le code C# complet qui recherche collectivement les chaînes de texte et les expressions dans plusieurs fichiers et dossiers :

// Recherche de texte dans plusieurs fichiers de différents formats de fichiers dans plusieurs dossiers à l'aide de C#

// Création d'un index et indexation des documents à partir du dossier spécifié
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Rechercher des documents contenant le mot « eau » ou « non » ou l'expression « Lorem ipsum »
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Impression du résultat
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Mettez en surbrillance les résultats de la recherche
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\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" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Impression des phrases trouvées
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

Obtenir une licence gratuite ou un essai gratuit

License gratuite

Obtenez une licence temporaire gratuite 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 étudié l’analyse de texte pour rechercher divers textes dans de nombreux fichiers répartis dans plusieurs dossiers à l’aide de C#. En commençant par la requête de recherche, nous avons exploré plusieurs fichiers et dossiers, en mettant en évidence les mots ou expressions recherchés dans les fichiers HTML respectifs.

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

Toute demande de renseignements ou discussion supplémentaire peut être adressée au forum disponible.

Voir également