Fuzzy Search pomocí C# .NET
  • 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#.

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

.NET API pro vyhledávání v souborech a složkách

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.


Viz také