- 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.
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.