Avant d’entrer dans les détails, donnons un aperçu de la technique de recherche en texte intégral. La recherche en texte intégral est essentiellement un moyen plus avancé de rechercher un texte/une requête dans une collection de documents. Cette approche trouve rapidement toutes les instances d’un terme et fonctionne en utilisant des index de texte. Dans cet article, nous apprendrons comment rechercher par programmation du texte intégral dans des documents à l’aide de C#.
Après cela, vous pouvez implémenter diverses techniques de recherche pour rechercher du texte dans des documents de traitement de texte, des feuilles de calcul, des présentations, des fichiers HTML, des livres électroniques PDF, des messages électroniques, des archives ZIP et de nombreux autres fichiers.
L’un des exemples d’implémentation de la recherche en texte intégral se trouve dans les traitements de texte et les éditeurs de texte. Il vous aide à trouver une phrase ou un mot n’importe où dans le document.
Les sujets suivants sont traités ci-dessous :
- API .NET pour la recherche en texte intégral
- Recherche plein texte
- Effectuer une recherche en C# * Surligner les résultats de la recherche
API .NET pour la recherche de texte
GroupDocs.Search for .NET est une API de recherche back-end qui permet la recherche en texte intégral et peut être intégrée à n’importe quelle application .NET sans aucun outil tiers ni dépendance logicielle. Il vous permet de rechercher parmi une multitude de formats de documents dans vos applications.
Vous pouvez télécharger le programme d’installation DLLs ou MSI à partir de la section téléchargements ou installer l’API dans votre application .NET via NuGet.
PM> Install-Package GroupDocs.Search
Recherche plein texte avec C#
Il existe deux étapes principales pour effectuer ou implémenter une recherche plein texte.
- Indexation
- Effectuer une recherche
Indexage
Pour pouvoir rechercher instantanément parmi des milliers de documents avec des formats de fichiers identiques ou différents, vous devez créer un index et y ajouter ces documents.
Qu’est-ce qu’un index ?
Un index possède le texte numérisé de tous les documents. Par conséquent, lorsque vous allez effectuer une opération de recherche (recherche d’une requête spécifique), seul l’index est référencé, et non le texte des documents d’origine.
Création d’index
Un index peut être créé en mémoire ou sur un disque. L’index créé en mémoire ne peut pas être sauvegardé après avoir quitté votre programme. En revanche, un index créé sur le disque peut être chargé ultérieurement pour continuer à fonctionner. L’exemple suivant montre comment créer un index sur un disque.
Index index = new Index("indexPath/FolderName/");
Lorsque les documents sont indexés, l’index est prêt à gérer les requêtes de recherche. Voici quelques-unes des techniques de recherche pouvant être effectuées à l’aide de GroupDocs.Search pour .NET :
- Recherche sensible à la casse
- Recherche d’expressions régulières
- Recherche de phrases
- Recherche à facettes
- Recherche de synonymes
- Recherche générique
Effectuer une recherche en C#
A partir d’un cas d’utilisation. Si nous avons plusieurs documents (Word, PDF, Excel et HTML) et que nous voulons effectuer une requête de recherche spécifique (terme de recherche “vidéo”) sur eux.
Voici les étapes à suivre pour effectuer une recherche de texte sur plusieurs documents dans un dossier :
- Décidez du dossier des documents source et du dossier d’index.
- Préparez la chaîne de requête.
- Créez Index à l’aide du dossier d’index.
- Ajoutez le dossier des documents source à l’index.
- Effectuez une recherche à l’aide de la méthode Recherche Classe Index.
- Résultats de parcours et de recherche pour les propriétés de chaque document.
Le code source suivant effectue une recherche de texte à l’aide de C# sur tous les documents du dossier fourni.
// Rechercher le texte de la requête dans tous les documents du dossier fourni en C#
string indexFolder = @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";
// Création d'un index dans le dossier spécifié et ajout du dossier de documents à l'index
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// Recherche dans l'index
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);
// Parcourez chaque document du résultat de la recherche
foreach (FoundDocument document in result)
{
Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
Console.WriteLine("Occurance : " + document.OccurrenceCount);
}
Nous obtiendrons le chemin du document et le nombre d’occurrences du terme de recherche dans tous les documents disponibles dans le dossier de documents. Voici la capture d’écran pour visualiser.
Mettre en surbrillance les résultats de la recherche de texte en C#
Effectuons maintenant la même recherche de texte, mais cette fois nous allons mettre en surbrillance toutes les occurrences qui correspondent à la requête.
Les étapes suivantes montrent comment mettre en surbrillance les résultats de la recherche de texte :
- Préparez la chaîne de requête.
- Créez Index en utilisant le chemin du dossier d’index.
- Ajoutez le dossier des documents source à l’index.
- Recherchez le dossier de documents à l’aide de la méthode Rechercher.
- En parcourant les résultats de la recherche, créez le Surligneur.
- Utilisez la méthode Highlight de la classe Index pour mettre en surbrillance les résultats de la recherche.
Le code suivant génère la sortie HTML avec les résultats de recherche en surbrillance à l’aide de C#.
string indexFolder = @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";
// Créer un index dans le dossier spécifié et ajouter le dossier de documents à l'index
Index index = new Index(indexFolder);
index.Add(documentFolder);
// Rechercher le mot de la requête
SearchResult result = index.Search(query);
// Mettre en surbrillance toutes les occurrences dans le texte
for (int i = 0; i < result.DocumentCount; i++)
{
FoundDocument document = result.GetFoundDocument(i);
string path = indexFolder + "Highlighted-"+ i +".html";
OutputAdapter outputAdapter = new FileOutputAdapter(path);
Highlighter highlighter = new HtmlHighlighter(outputAdapter);
index.Highlight(document, highlighter);
}
En sortie, nous obtiendrons plusieurs fichiers HTML. Chaque fichier affichera le contenu d’un document différent (par exemple, excel.xlsx, source.docx, cible.docx) avec le terme/mot de recherche en surbrillance. Vous trouverez ci-dessous la sortie HTML en surbrillance d’un fichier DOCX.
Obtenez une licence API gratuite
Vous pouvez obtenir une licence temporaire gratuite afin d’utiliser l’API sans les limitations d’évaluation.
Conclusion
Dans cet article, nous avons appris à rechercher du texte dans plusieurs documents d’un dossier à l’aide de C#. En outre, nous avons discuté de la manière de mettre en surbrillance par programmation le texte des résultats de recherche au format HTML.
Vous pouvez en savoir plus sur l’API en utilisant documentation. De nombreux autres exemples sont disponibles sur GitHub. Pour toute question, contactez-nous via le forum.
Voir également
- Créer une solution de recherche en texte intégral en Java
- Rechercher des synonymes de mots à l’aide de C#
- Rechercher des synonymes dans plusieurs fichiers à l’aide de C#
- Rechercher et remplacer du texte dans un PDF à l’aide de C#
- Rechercher et remplacer des mots dans des documents Word à l’aide de C#