Haben Sie sich jemals gefragt, wie Sie ganz einfach viele Dateien durchsuchen oder die Herausforderung meistern können, Dateien in verschiedenen Ordnern zu durchsuchen? Dieser Artikel enthält die Antworten, die Sie suchen. Tauchen wir ein in die Welt der Textsuche und erfahren Sie, wie Sie mit C# nach verschiedenen Texten oder Phrasen in verschiedenen Dateien und Ordnern suchen.

C#-API zum Scannen von Text in Dateien und Ordnern

Jetzt verwenden wir die API GroupDocs.Search for .NET, um zahlreiche Texte in Dateien unterschiedlicher Formate über Ordner hinweg zu durchsuchen. Mit dieser Bibliothek können wir Text in einer Vielzahl von Dateiformaten systematisch scannen, z. B. Word-Dokumente, Tabellenkalkulationen, Präsentationen, PDF-Dateien, Markup-Dateien, E-Books, E-Mail-Nachrichten, One Note-Dokumente und ZIP-Archive. Eine ausführliche Liste der unterstützten Dateiformate finden Sie in der umfassenden Dokumentation.

Sie haben die Möglichkeit, entweder die DLLs oder das MSI-Installationsprogramm aus dem Download-Bereich herunterzuladen oder die API mit NuGet in Ihrer .NET-Anwendung zu installieren.

PM> Install-Package GroupDocs.Search

Durchsuchen mehrerer Texte in Dateien über Ordner hinweg mit C#

Befolgen Sie diese Schritte, um mit C# 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 aus und speichern Sie die Ergebnisse.
  • Durchlaufen Sie die Suchergebnisse:
    • Rufen Sie jedes gefundene Dokument mit der GetFoundDocument-Methode ab.
    • Rufen Sie alle Dateiinformationen für das gefundene Dokument ab oder drucken Sie sie 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 Highlight-Methode in einer HTML-Datei aus.
// Textsuche in mehreren Dateien verschiedener Dateiformate in mehreren Ordnern mit C#

// Erstellen eines Index und Indizieren von Dokumenten aus dem angegebenen Ordner
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Suchen Sie nach Dokumenten, die das Wort „Wasser“ oder „Nicht“ oder den Ausdruck „Lorem ipsum“ enthalten.
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Drucken des Ergebnisses
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Markieren Sie die Suchergebnisse
    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
}

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

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.

// Drucken des Ergebnisses
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);

        // Gefundene Begriffe drucken
        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]);
            }
        }
        // Gefundene Phrasen drucken
        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]);
            }
        }
    }
}

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

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

Vollständiger Code

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

// Textsuche in mehreren Dateien verschiedener Dateiformate in mehreren Ordnern mit C#

// Erstellen eines Index und Indizieren von Dokumenten aus dem angegebenen Ordner
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Suchen Sie nach Dokumenten, die das Wort „Wasser“ oder „Nicht“ oder den Ausdruck „Lorem ipsum“ enthalten.
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Drucken des Ergebnisses
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Markieren Sie die Suchergebnisse
    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);

        // Gefundene Begriffe drucken
        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]);
            }
        }
        // Gefundene Phrasen drucken
        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]);
            }
        }
    }
}

Erhalten Sie eine kostenlose Lizenz oder eine kostenlose Testversion

Freie Lizenz

Besorgen Sie sich eine kostenlose temporäre Lizenz, um diese Bibliothek ohne Einschränkungen zu erkunden.

Kostenlose Testphase

Sie können die kostenlose Testversion herunterladen im Download-Bereich.

.NET-API zum Suchen in Dateien und Ordnern

Abschluss

In diesem Artikel haben wir das Textscannen zum Durchsuchen verschiedener Texte in zahlreichen Dateien in mehreren Ordnern mit C# untersucht. Beginnend mit der Suchabfrage durchsuchten wir mehrere Dateien und Ordner und markierten die gesuchten Wörter oder Phrasen in den jeweiligen HTML-Dateien.

Ausführliche Informationen zur API finden Leser in der Dokumentation.

Alle Anfragen oder zusätzlichen Diskussionen können an das verfügbare Forum gerichtet werden.

Siehe auch