- Nevíte, jaká barva nebo barevný pravopis byl v dokumentu použit.
- Hledá se „John“, ale mohlo to být napsáno jako „Jon“ nebo možná „Jhon“.
- Vyhledání „USA“, když uživatel zadá „USA“.
- Slovo nebo fráze, kterou hledáte, může mít „chybu“, je to opět „chyba“.
Zde přichází Fuzzy Search. Fuzzy vyhledávání vám umožňuje najít v datech spíše přibližné shody než přesné shody, což umožňuje flexibilitu ve vyhledávacích dotazech. To je užitečné zejména ve scénářích s překlepy, překlepy nebo odchylkami v datech. Tento článek ukazuje, jak programově provádět fuzzy vyhledávání ve více dokumentech napříč složkami pomocí C#.
Knihovna C# Fuzzy Search
Pro Fuzzy Search použijeme GroupDocs.Search for .NET API. To umožňuje určitý stupeň tolerance v pravopisu, díky čemuž je efektivní při přizpůsobování regionálních jazykových variací, jako jsou ty mezi britskou a americkou angličtinou.
Tato knihovna nám umožňuje programově vyhledávat text v široké škále formátů souborů, jako jsou dokumenty Word (DOC, DOCX), tabulky (XLS, XLSX), prezentace (PPT, PPTX), soubory PDF, značky (HTML, XML), Markdown (MD), elektronické knihy (EPUB, CHM, FB2), e-mailové zprávy (MSG, EML), dokumenty OneNote a archivy ZIP.
Chcete-li zjistit všechny typy souborů, se kterými můžete pracovat, podívejte se na dokumentaci.
Můžete si vybrat, zda chcete získat DLL nebo instalační program MSI z část ke stažení, nebo přidat API do svého programu .NET pomocí NuGet.
Pojďme Fuzzy hledat v souborech pomocí C#
Chcete-li provést fuzzy vyhledávání ve více souborech různých formátů souborů ve složkách pomocí C#, postupujte takto:
- Vytvořte Index zadáním cesty ke složce.
- Přidejte cestu nadřazené složky pro vyhledávací adresář do vytvořeného indexu.
- Definujte vyhledávací dotaz.
- Aktivujte Fuzzy Search povolením této možnosti.
- Podle potřeby nastavte úroveň podobnosti ve fuzzy algoritmu.
- Chcete-li získat výsledky vyhledávání, proveďte vyhledávání pomocí metody Hledat.
- Nyní můžete iterovat na SearchResults a vytvořit nebo vytisknout výstup, jak chcete.
Fuzzy vyhledávání v níže uvedeném kódu C# najde přibližné shody daného dotazu ve všech souborech ve všech podsložkách s 20% tolerancí pravopisných chyb.
// Fuzzy Vyhledávání více souborů ve více složkách pomocí C#
// Vytvoření indexové složky a přidání složky dokumentu do ní
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);
Zde je úroveň podobnosti nastavena na 0,8, tj. 80% shoda, což odpovídá 20% toleranci chyb. Úroveň tolerance můžete upravit vyladěním úrovně podobnosti v kódu.
Níže jsou uvedeny fuzzy výsledky vyhledávání, které můžete získat z výše uvedeného kódu. Je to docela jednoduché, nicméně tiskový kód je také k dispozici dále v tomto článku.
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
Tisk výsledků hledání
Následující kód C# poskytuje dva způsoby prezentace výsledků vyhledávání.
- Zvýrazněte všechny přibližné shody.
- Vytiskněte výsledky v čitelném a analyzovatelném formátu
// Zvýraznění a tisk výsledků hledání pro všechny dokumenty pomocí 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);
// Tisk nalezených termínů
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("===========================================");
}
Získání bezplatné licence nebo bezplatné zkušební verze
Bezplatná licence
Získejte zdarma dočasnou licenci k prozkoumání této knihovny bez omezení.
Zkušební verze zdarma
Můžete si stáhnout bezplatnou zkušební verzi v sekci ke stažení.
Závěr
V tomto článku jsme se podívali na programový přístup C# ke kouzlu Fuzzy vyhledávání, abychom našli všechna přibližná odpovídající slova, ale s určitým stupněm tolerance chyb. Díky této funkci je fuzzy vyhledávání efektivní při přizpůsobování regionálních jazykových variací, jako jsou ty mezi britskou a americkou angličtinou, překlepy v textu, variace jmen a fonetické shody.
Úplné podrobnosti o rozhraní API čtenářům doporučujeme nahlédnout do dokumentace.
Jakékoli dotazy nebo další diskuse můžete směřovat na fórum.