Než se vrhneme na podrobnosti, pojďme si udělat přehled o technice fulltextového vyhledávání. Fulltextové vyhledávání je v podstatě pokročilejší způsob prohledávání textu/dotazu nad sbírkou dokumentů. Tento přístup rychle najde všechny výskyty výrazu a funguje pomocí textových indexů. V tomto článku se naučíme, jak programově vyhledávat fulltextově v dokumentech pomocí C#.
Poté můžete implementovat různé vyhledávací techniky pro vyhledávání textu v textových dokumentech, tabulkách, prezentacích, souborech HTML, elektronických knihách PDF, e-mailových zprávách, archivech ZIP a mnoha dalších souborech.
Jedním z příkladů implementace fulltextového vyhledávání je v textových procesorech a textových editorech. Pomůže vám najít frázi nebo slovo kdekoli v dokumentu.
Níže jsou uvedena následující témata:
- .NET API pro fulltextové vyhledávání
- Fulltextové vyhledávání
- Proveďte vyhledávání v C#
- Zvýrazněte výsledky hledání
.NET API pro vyhledávání textu
GroupDocs.Search for .NET je back-end vyhledávací rozhraní API, které umožňuje fulltextové vyhledávání a lze jej integrovat do libovolné aplikace .NET bez jakéhokoli nástroje třetí strany nebo závislosti na softwaru. Umožňuje vám prohledávat ve velkém množství formátů dokumentů ve vašich aplikacích.
Můžete si stáhnout DLL nebo MSI instalační program z části ke stažení nebo nainstalovat API do vaší aplikace .NET prostřednictvím NuGet.
PM> Install-Package GroupDocs.Search
Fulltextové vyhledávání pomocí C#
K provedení nebo implementaci fulltextového vyhledávání existují dva hlavní kroky.
- Indexování
- Proveďte vyhledávání
Indexování
Aby bylo možné okamžitě vyhledávat v tisících dokumentů se stejnými nebo různými formáty souborů, musíte vytvořit rejstřík a tyto dokumenty do něj přidat.
Co je index?
Rejstřík obsahuje naskenovaný text všech dokumentů. Proto, když se chystáte provést vyhledávací operaci (vyhledat konkrétní dotaz), odkazuje se pouze na rejstřík, nikoli na text původních dokumentů.
Vytvoření indexu
Index lze vytvořit v paměti nebo na disku. Index vytvořený v paměti nelze po ukončení programu uložit. Naproti tomu index vytvořený na disku může být v budoucnu načten, aby mohl pokračovat v práci. Následující příklad ukazuje, jak vytvořit index na disku.
Index index = new Index("indexPath/FolderName/");
Když jsou dokumenty indexovány, index je připraven zpracovat vyhledávací dotazy. Níže jsou uvedeny některé z technik vyhledávání, které lze provádět pomocí GroupDocs.Search for .NET:
- Vyhledávání rozlišující malá a velká písmena
- Vyhledávání regulárních výrazů
- Hledání frází
- Fasetované vyhledávání
- Synonymum Hledat
- Vyhledávání pomocí zástupných znaků
Proveďte vyhledávání v C#
Počínaje případem použití. Pokud máme více dokumentů (Word, PDF, Excel a HTML) a chceme nad nimi provést konkrétní vyhledávací dotaz (hledaný výraz „video“).
Níže jsou uvedeny kroky, jak provádět textové vyhledávání ve více dokumentech ve složce:
- Určete složku zdrojových dokumentů a složku indexu.
- Připravte řetězec dotazu.
- Vytvořte Index pomocí složky indexu.
- Přidejte složku zdrojových dokumentů do indexu.
- Proveďte vyhledávání pomocí metody Search třídy Index.
- Procházet a hledat výsledky pro vlastnosti každého dokumentu.
Následující zdrojový kód provádí textové vyhledávání pomocí C# ve všech dokumentech poskytnuté složky.
// Hledat text dotazu ve všech dokumentech poskytnuté složky v C#
string indexFolder = @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";
// Vytvoření indexu v zadané složce a přidání složky dokumentů do indexu
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// Vyhledávání v indexu
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);
// Projděte každý dokument ve výsledku hledání
foreach (FoundDocument document in result)
{
Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
Console.WriteLine("Occurance : " + document.OccurrenceCount);
}
Získáme cestu k dokumentu a počet výskytů hledaného výrazu ve všech dokumentech dostupných ve složce dokumentů. Zde je snímek obrazovky k vizualizaci.
Zvýraznění výsledků textového vyhledávání v C#
Nyní provedeme stejné textové vyhledávání, ale tentokrát zvýrazníme všechny výskyty, které odpovídají dotazu.
Následující kroky ukazují, jak zvýraznit výsledky textového vyhledávání:
- Připravte řetězec dotazu.
- Vytvořte Index pomocí cesty indexové složky.
- Přidejte složku zdrojových dokumentů do indexu.
- Prohledejte složku dokumentů pomocí metody Search.
- Při procházení výsledků vyhledávání vytvořte Zvýrazňovač.
- Pro zvýraznění výsledků hledání použijte metodu Highlight třídy Index.
Následující kód generuje výstup HTML se zvýrazněnými výsledky vyhledávání pomocí jazyka C#.
string indexFolder = @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";
// Vytvořte index v zadané složce a přidejte složku dokumentů do Index
Index index = new Index(indexFolder);
index.Add(documentFolder);
// Vyhledejte slovo dotazu
SearchResult result = index.Search(query);
// Zvýrazněte všechny výskyty v textu
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);
}
Jako výstup získáme více HTML souborů. Každý soubor zobrazí obsah jiného dokumentu (např. excel.xlsx, source.docx, target.docx) se zvýrazněným hledaným výrazem/slovem. Níže je uveden zvýrazněný HTML výstup souboru DOCX.
Získejte bezplatnou licenci API
Můžete získat bezplatnou dočasnou licenci, abyste mohli používat API bez omezení hodnocení.
Závěr
V tomto článku jsme se naučili vyhledávat text ve více dokumentech složky pomocí C#. Dále jsme diskutovali o tom, jak programově zvýraznit text výsledků vyhledávání ve formátu HTML.
Více o API se můžete dozvědět pomocí dokumentace. Mnoho dalších příkladů je k dispozici na GitHub. V případě dotazů nás kontaktujte prostřednictvím fóra.