Fuzzy-Suche mit C# .NET
  • Sie wissen nicht, welche Farbe oder Farbschreibweise im Dokument verwendet wurde.
  • Gesucht wird nach „John“, aber es hätte auch „Jon“ oder vielleicht „Jhon“ geschrieben werden können.
  • Suchen nach „USA“, wenn der Benutzer „USA“ eingibt.
  • Das gesuchte Wort oder die gesuchte Phrase könnte einen „Fehler“ enthalten. Hoppla, es ist wieder ein „Fehler“.

Hier kommt die Fuzzy-Suche. Mit der Fuzzy-Suche können Sie ungefähre Übereinstimmungen statt exakter Übereinstimmungen in Daten finden und so Flexibilität bei Suchanfragen ermöglichen. Dies ist besonders nützlich in Szenarien mit Tippfehlern, Rechtschreibfehlern oder Variationen in den Daten. In diesem Artikel wird gezeigt, wie Sie mit C# programmgesteuert eine Fuzzy-Suche in mehreren Dokumenten über Ordner hinweg durchführen.

C#-Fuzzy-Suchbibliothek

Für die Fuzzy-Suche verwenden wir die API GroupDocs.Search for .NET. Dadurch ist ein gewisses Maß an Rechtschreibtoleranz gewährleistet, wodurch regionale Sprachunterschiede wie die zwischen britischem und amerikanischem Englisch wirksam berücksichtigt werden können.

Diese Bibliothek ermöglicht uns die programmgesteuerte Suche nach Text in einer Vielzahl von Dateiformaten, wie z. B. Word-Dokumenten (DOC, DOCX), Tabellenkalkulationen (XLS, XLSX), Präsentationen (PPT, PPTX), PDF-Dateien, Markup (HTML, XML), Markdown (MD), E-Books (EPUB, CHM, FB2), E-Mail-Nachrichten (MSG, EML), OneNote-Dokumente und ZIP-Archive.

Um herauszufinden, mit welchen Dateitypen Sie arbeiten können, schauen Sie sich die Dokumentation an.

Sie können die DLLs oder das MSI-Installationsprogramm aus dem Download-Bereich herunterladen oder die API mit NuGet zu Ihrem .NET-Programm hinzufügen.

Lassen Sie uns mit C# eine Fuzzy-Suche in Dateien durchführen

Befolgen Sie diese Schritte, um mit C# eine Fuzzy-Suche in mehreren Dateien verschiedener Dateiformate in Ordnern durchzuführen:

  • Erstellen Sie einen Index, indem Sie einen Ordnerpfad angeben.
  • Fügen Sie den übergeordneten Ordnerpfad für das Suchverzeichnis zum erstellten Index hinzu.
  • Definieren Sie die Suchabfrage.
  • Aktivieren Sie die Fuzzy-Suche, indem Sie die Option aktivieren.
  • Legen Sie den Ähnlichkeitsgrad im Fuzzy-Algorithmus nach Bedarf fest.
  • Führen Sie die Suche mit der Search-Methode aus, um die Suchergebnisse zu erhalten.
  • Jetzt können Sie mit SearchResults iterieren, um die Ausgabe nach Ihren Wünschen zu erstellen oder zu drucken.

Die Fuzzy-Suche im unten genannten C#-Code findet die ungefähren Übereinstimmungen der angegebenen Abfrage in allen Dateien in allen Unterordnern mit einer Fehlertoleranz von 20 % bei der Schreibweise.

// Fuzzy-Suche nach mehreren Dateien in mehreren Ordnern mit C#

// Erstellen Sie einen Indexordner und fügen Sie den Ordner des Dokuments hinzu
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);

string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);

Hier wird der Ähnlichkeitsgrad auf 0,8 eingestellt, also 80 % Übereinstimmung, was einer Fehlertoleranz von 20 % entspricht. Sie können die Toleranzstufe anpassen, indem Sie die Ähnlichkeitsstufe im Code anpassen.

Nachfolgend finden Sie die Fuzzy-Suchergebnisse, die Sie mit dem obigen Code erhalten können. Es ist ganz einfach, der Druckcode ist jedoch später in diesem Artikel verfügbar.

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

Suchergebnisse drucken

Der folgende C#-Code bietet zwei Möglichkeiten zur Darstellung Ihrer Suchergebnisse.

  • Markieren Sie alle ungefähren Übereinstimmungen.
  • Drucken Sie die Ergebnisse in einem lesbaren und analysierbaren Format aus
// Markieren und drucken Sie Suchergebnisse für alle Dokumente mit C#
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // Gefundene Begriffe drucken
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}

Erhalten Sie eine kostenlose Lizenz oder eine kostenlose Testversion

Freie Lizenz

Besorgen Sie sich kostenlos eine vorübergehende 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 uns mit dem programmgesteuerten C#-Ansatz für die Magie der Fuzzy-Suche befasst, um alle ungefähr passenden Wörter zu finden, jedoch mit einem gewissen Grad an Fehlertoleranz. Diese Funktion macht die Fuzzy-Suche effektiv bei der Berücksichtigung regionaler Sprachvariationen wie zwischen britischem und amerikanischem Englisch, Tippfehlern im Text, Namensvariationen und phonetischen Übereinstimmungen.

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

Alle Fragen oder zusätzliche Diskussionen können an das Forum gerichtet werden.


Siehe auch