Vous êtes-vous déjà demandé comment effectuer une recherche transparente dans de nombreux fichiers, ou peut-être naviguer dans la complexité de la recherche dans des fichiers dans plusieurs dossiers ? Toutes vos questions trouvent des réponses ici. Cet article explore le domaine de l’analyse de texte, montrant comment rechercher plusieurs textes ou expressions dans divers fichiers répartis dans divers dossiers à l’aide de Java.

API Java pour analyser du texte dans des fichiers et des dossiers

Aujourd’hui, nous allons utiliser l’API GroupDocs.Search for Java pour rechercher plusieurs textes dans des fichiers de différents formats de fichiers dans des dossiers. Cette bibliothèque nous permet d’analyser par programme le texte dans une large gamme de formats de fichiers pour les documents Word, les feuilles de calcul, les présentations, les fichiers PDF, les fichiers de balisage, les livres électroniques, les messages électroniques, les documents One Note et les archives ZIP. La documentation fournit une liste détaillée des formats de fichiers pris en charge.

Vous pouvez télécharger le fichier JAR à partir de la section téléchargements ou utiliser les dernières configurations Maven du référentiel et des dépendances dans vos applications Java.

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

Suivez les étapes suivantes pour effectuer une recherche de texte dans plusieurs fichiers de plusieurs dossiers à l’aide de Java 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 :
    • Accédez à chaque document trouvé à l’aide de la méthode getFoundDocument.
    • Accédez 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 de surbrillance.
// Recherche de texte dans plusieurs fichiers de différents formats de fichiers dans plusieurs dossiers à l'aide de Java

// Création d'un index dans le dossier spécifié
Index index = new Index("path/for/indexingFolder");

// Indexation des documents du dossier spécifié
index.add("path/parent-folder/");

String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("====================================");
    System.out.println("File Name: " + document.getDocumentInfo().getFilePath());

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
}

Le code ci-dessus vous permet collectivement de rechercher des textes spécifiques dans plusieurs fichiers et de générer 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 des résultats de recherche ===

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
 
    // Impression des résultats de recherche ===========
    System.out.println("Occurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // Impression des termes trouvés
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // Impression des phrases trouvées
        if (field.getTermSequences() != null) {
            for (int k = 0; k < field.getTermSequences().length; k++) {
                String[] terms = field.getTermSequences()[k];
                String sequence = "";
                for (String term : terms) {
                    sequence += term + " ";
                }
                System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[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 :

File Name: Lorem ipsum.docx
Occurrences: 101
	Field: filename
	Occurrences: 1
		lorem ipsum  - 1
	Field: content
	Occurrences: 100
		non - 94
		lorem ipsum  - 6
====================================
File Name: Lorem ipsum.pdf
Occurrences: 60
	Field: filename
	Occurrences: 1
		lorem ipsum  - 1
	Field: content
	Occurrences: 59
		non - 53
		lorem ipsum  - 6
====================================
File Name: English.txt
Occurrences: 39
	Field: content
	Occurrences: 39
		water - 39

Code complet

Voici le code Java 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 Java

// Création d'un index dans le dossier spécifié
Index index = new Index("path/for/indexingFolder");

// Indexation des documents du dossier spécifié
index.add("path/parent-folder/");

String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("====================================");
    System.out.println("File Name: " + document.getDocumentInfo().getFilePath());

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
  
    // Impression des résultats de recherche ===========
    System.out.println("Occurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // Impression des termes trouvés
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // Impression des phrases trouvées
        if (field.getTermSequences() != null) {
            for (int k = 0; k < field.getTermSequences().length; k++) {
                String[] terms = field.getTermSequences()[k];
                String sequence = "";
                for (String term : terms) {
                    sequence += term + " ";
                }
                System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
            }
        }
    }  
}

Obtenir une licence gratuite ou un essai gratuit

License gratuite

Pour explorer cette bibliothèque sans contraintes, vous pouvez obtenir une licence temporaire gratuite.

Essai gratuit

Téléchargez l’essai gratuit depuis la section téléchargements.

API Java pour la recherche dans les fichiers et dossiers

Conclusion

Dans cet article, nous venons d’explorer l’analyse de texte pour rechercher plusieurs textes dans plusieurs fichiers dans plusieurs dossiers à l’aide de Java. En commençant par la requête de recherche, nous avons effectué une recherche dans plusieurs fichiers et dossiers et mis en évidence les résultats trouvés dans les fichiers HTML respectifs.

Pour des informations détaillées sur l’API, les lecteurs sont encouragés à consulter la documentation. Les questions et discussions ultérieures peuvent être adressées au forum fourni.

Voir également