Bevor wir ins Detail gehen, wollen wir uns einen Überblick über die Technik der Volltextsuche verschaffen. Die Volltextsuche ist im Grunde eine fortgeschrittenere Methode, um einen Text/eine Abfrage über eine Sammlung von Dokumenten zu durchsuchen. Dieser Ansatz findet schnell alle Instanzen eines Begriffs und funktioniert mit Textindizes. In diesem Artikel erfahren Sie, wie Sie mit C# programmgesteuert Volltexte in Dokumenten durchsuchen.

Danach können Sie verschiedene Suchtechniken implementieren, um Text in Textverarbeitungsdokumenten, Tabellenkalkulationen, Präsentationen, HTML-Dateien, PDF-eBooks, E-Mail-Nachrichten, ZIP-Archiven und vielen anderen Dateien zu durchsuchen.

Eines der Beispiele für die Implementierung der Volltextsuche sind Textverarbeitungsprogramme und Texteditoren. Es hilft Ihnen, einen Satz oder ein Wort irgendwo im Dokument zu finden.

Volltextsuche

Nachfolgend werden folgende Themen behandelt:

.NET-API für die Textsuche

GroupDocs.Search for .NET ist eine Back-End-Such-API, die eine Volltextsuche ermöglicht und in jede .NET-Anwendung ohne Tool- oder Softwareabhängigkeit von Drittanbietern integriert werden kann. Damit können Sie in Ihren Anwendungen in einer Vielzahl von Dokumentformaten suchen.

Sie können das DLLs- oder MSI-Installationsprogramm aus dem Downloadbereich herunterladen oder die API in Ihrer .NET-Anwendung über NuGet installieren.

PM> Install-Package GroupDocs.Search

Volltextsuche mit C#

Es gibt zwei Hauptschritte, um eine Volltextsuche durchzuführen oder zu implementieren.

  • Indizierung
  • Suche durchführen

Indizierung

Um Tausende von Dokumenten mit denselben oder unterschiedlichen Dateiformaten sofort durchsuchen zu können, müssen Sie einen Index erstellen und diese Dokumente hinzufügen.

Was ist ein Index?

Ein Index enthält gescannten Text aller Dokumente. Wenn Sie also eine Suchoperation durchführen (eine bestimmte Abfrage durchsuchen), wird nur auf den Index verwiesen und nicht auf den Text der Originaldokumente.

Indexerstellung

Ein Index kann im Arbeitsspeicher oder auf einer Festplatte erstellt werden. Der im Speicher erstellte Index kann nach dem Beenden Ihres Programms nicht gespeichert werden. Im Gegensatz dazu kann ein auf der Festplatte erstellter Index in Zukunft geladen werden, um weiterzuarbeiten. Das folgende Beispiel zeigt, wie ein Index auf einem Datenträger erstellt wird.

Index index = new Index("indexPath/FolderName/");

Wenn Dokumente indiziert werden, ist der Index bereit, die Suchanfragen zu verarbeiten. Im Folgenden sind einige der Suchtechniken aufgeführt, die mit GroupDocs.Search für .NET durchgeführt werden können:

  • Suche nach Groß- und Kleinschreibung
  • Suche nach regulären Ausdrücken
  • Phrasensuche
  • Facettensuche
  • Synonymsuche
  • Wildcard-Suche

Suche in C# durchführen

Beginnend mit einem Anwendungsfall. Wenn wir mehrere Dokumente (Word, PDF, Excel und HTML) haben und eine bestimmte Suchanfrage (Suchbegriff „Video“) über sie durchführen möchten.

Im Folgenden finden Sie die Schritte zum Durchführen einer Textsuche für mehrere Dokumente in einem Ordner:

  • Legen Sie den Quelldokumentordner und den Indexordner fest.
  • Bereiten Sie die Abfragezeichenfolge vor.
  • Erstellen Sie Index mithilfe des Indexordners.
  • Fügen Sie den Quelldokumentordner zum Index hinzu.
  • Führen Sie eine Suche mit der Search-Methode Index-Klasse durch.
  • Durchsuchen und Suchergebnisse für die Eigenschaften jedes Dokuments.

Der folgende Quellcode führt eine Textsuche mit C# auf allen Dokumenten des bereitgestellten Ordners durch.

// Suchabfragetext in allen Dokumenten des bereitgestellten Ordners in C#
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// Index im angegebenen Ordner erstellen und Dokumentenordner zum Index hinzufügen
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Suche im Index
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// Durchsuchen Sie jedes Dokument des Suchergebnisses
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

Wir erhalten den Dokumentenpfad und die Anzahl der Suchbegriffvorkommen in allen Dokumenten, die im Dokumentenordner verfügbar sind. Hier ist der Screenshot zur Visualisierung.

Vollständige Suchtextausgabe

Textsuchergebnisse in C# hervorheben

Lassen Sie uns jetzt die gleiche Textsuche durchführen, aber dieses Mal werden wir alle Vorkommen hervorheben, die der Abfrage entsprechen.

Die folgenden Schritte zeigen, wie Sie die Ergebnisse der Textsuche hervorheben:

  • Bereiten Sie die Abfragezeichenfolge vor.
  • Erstellen Sie Index mithilfe des Indexordnerpfads.
  • Fügen Sie den Quelldokumentordner zum Index hinzu.
  • Durchsuchen Sie den Dokumentenordner mit der Methode Suchen.
  • Erstellen Sie beim Durchlaufen der Suchergebnisse den Highlighter.
  • Verwenden Sie die Methode Highlight der Klasse Index, um die Suchergebnisse hervorzuheben.

Der folgende Code generiert die HTML-Ausgabe mit hervorgehobenen Suchergebnissen mithilfe von C#.

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// Erstellen Sie einen Index im angegebenen Ordner und fügen Sie den Dokumentenordner zum Index hinzu
Index index = new Index(indexFolder);
index.Add(documentFolder);

// Suchen Sie nach dem Suchwort
SearchResult result = index.Search(query);

// Markieren Sie alle Vorkommen im Text
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);
}

Als Ausgabe erhalten wir mehrere HTML-Dateien. Jede Datei zeigt den Inhalt eines anderen Dokuments (zB excel.xlsx, source.docx, target.docx) mit hervorgehobenem Suchbegriff/Wort. Unten ist die hervorgehobene HTML-Ausgabe einer DOCX-Datei.

Volltext-Suchergebnisse im Inhalt hervorheben

Holen Sie sich eine kostenlose API-Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die API ohne die Evaluierungseinschränkungen zu verwenden.

Fazit

In diesem Artikel haben wir gelernt, Text in mehreren Dokumenten eines Ordners mit C# zu durchsuchen. Außerdem haben wir besprochen, wie der Text von Suchergebnissen im HTML-Format programmgesteuert hervorgehoben werden kann.

Unter Dokumentation erfahren Sie mehr über die API. Viele weitere Beispiele sind unter GitHub verfügbar. Bei Fragen kontaktieren Sie uns über das Forum.

Siehe auch