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é.
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.
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.