Haben Sie sich jemals gefragt, wie Sie zahlreiche Dateien nahtlos durchsuchen oder die Komplexität der Suche innerhalb von Dateien über mehrere Ordner hinweg bewältigen können? Alle Ihre Fragen finden hier Antworten. Dieser Artikel befasst sich mit dem Bereich des Textscannens und zeigt, wie Sie mit Java nach mehreren Texten oder Phrasen in verschiedenen Dateien suchen, die über verschiedene Ordner verteilt sind.

Java-API zum Scannen von Text in Dateien und Ordnern

Heute verwenden wir die API GroupDocs.Search for Java, um mehrere Texte in Dateien verschiedener Dateiformate ordnerübergreifend zu durchsuchen. Mit dieser Bibliothek können wir den Text in einer Vielzahl von Dateiformaten für Word-Dokumente, Tabellenkalkulationen, Präsentationen, PDF-Dateien, Markup-Dateien, E-Books, E-Mail-Nachrichten, One Note-Dokumente und ZIP-Archive programmgesteuert scannen. Die Dokumentation enthält eine detaillierte Liste der unterstützten Dateiformate.

Sie können die JAR-Datei aus dem Download-Bereich herunterladen oder die neuesten Repository- und Abhängigkeits-Maven-Konfigurationen in Ihren Java-Anwendungen verwenden.

Durchsuchen mehrerer Texte in Dateien über Ordner hinweg mit Java

Führen Sie die folgenden Schritte aus, um mit Java eine Textsuche in mehreren Dateien in mehreren Ordnern durchzuführen und hervorgehobene HTML-Ausgabedateien für jedes gefundene Dokument zu generieren.

  • Erstellen Sie ein Index-Objekt mit dem angegebenen Indexordnerpfad.
  • Indizieren Sie den übergeordneten Dokumentordner mithilfe der Add-Methode.
  • Definieren Sie eine Suchabfrage mit mehreren Begriffen oder Phrasen.
  • Führen Sie den Textscan mit der Suchmethode durch und speichern Sie die Ergebnisse.
  • Durchlaufen Sie die Suchergebnisse:
    • Greifen Sie mit der getFoundDocument-Methode auf jedes gefundene Dokument zu.
    • Greifen Sie auf alle Dateiinformationen für das gefundene Dokument zu oder drucken Sie diese aus.
    • Richten Sie einen OutputAdapter für das gewünschte Format und den gewünschten Pfad ein.
    • Erstellen Sie einen Textmarker für das Dokument.
    • Markieren Sie die Suchergebnisse und geben Sie sie mithilfe der Hervorhebungsmethode in einer HTML-Datei aus.
// Textsuche in mehreren Dateien verschiedener Dateiformate in mehreren Ordnern mit Java

// Erstellen eines Index im angegebenen Ordner
Index index = new Index("path/for/indexingFolder");

// Indizieren von Dokumenten aus dem angegebenen Ordner
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);
}

Mit dem obigen Code können Sie in mehreren Dateien nach bestimmten Texten suchen und für jedes gefundene Dokument hervorgehobene HTML-Ausgabedateien generieren.

Hervorgehobene Textsuchergebnisse im HTML-Format

Drucken der Ergebnisse der Textsuche

Aus dem Ergebnis der Suchanfrage können Sie weitere Informationen zu den gefundenen Dokumenten extrahieren.

// Suchergebnisse drucken ===

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
 
    // Suchergebnisse drucken ===========
    System.out.println("Occurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // Gefundene Begriffe drucken
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // Gefundene Phrasen drucken
        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]);
            }
        }
    }
}

Das folgende Ergebnis wird beim Drucken der obigen Suchergebnisse aus den DOCX-, PDF- und TXT-Dateien ausgegeben:

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

Vollständiger Code

Hier ist der vollständige Java-Code, der die Textzeichenfolgen und Phrasen in mehreren Dateien und Ordnern gemeinsam durchsucht:

// Textsuche in mehreren Dateien verschiedener Dateiformate in mehreren Ordnern mit Java

// Erstellen eines Index im angegebenen Ordner
Index index = new Index("path/for/indexingFolder");

// Indizieren von Dokumenten aus dem angegebenen Ordner
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);
  
    // Suchergebnisse drucken ===========
    System.out.println("Occurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // Gefundene Begriffe drucken
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // Gefundene Phrasen drucken
        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]);
            }
        }
    }  
}

Erhalten Sie eine kostenlose Lizenz oder eine kostenlose Testversion

Freie Lizenz

Um diese Bibliothek ohne Einschränkungen zu erkunden, können Sie eine kostenlose temporäre Lizenz erwerben.

Kostenlose Testphase

Laden Sie die kostenlose Testversion herunter aus dem Download-Bereich.

Java-API zum Suchen in Dateien und Ordnern

Abschluss

In diesem Artikel haben wir gerade das Scannen von Texten untersucht, um mithilfe von Java mehrere Texte in mehreren Dateien und mehreren Ordnern zu durchsuchen. Beginnend mit der Suchanfrage haben wir in mehreren Dateien und Ordnern gesucht und die gefundenen Ergebnisse in den jeweiligen HTML-Dateien hervorgehoben.

Für detaillierte API-Informationen werden Leser gebeten, die Dokumentation zu konsultieren. Fragen und weitere Diskussionen können an das bereitgestellte Forum gerichtet werden.

Siehe auch