V jiném článku jsme viděli, co jsou synonyma a jak získat všechna synonyma jakéhokoli slova. Co takhle najít tato synonyma v různých dokumentech? Tento článek vás provede hledáním synonym jakéhokoli konkrétního dotazu (slova) ve více souborech pomocí C#.
Níže budou probrána následující témata:
- .NET API – vyhledávání synonym
- Najít synonyma v dokumentech pomocí C#
- Prezentovat výsledky vyhledávání synonym pomocí C#
- Kompletní kód – Vyhledejte a vytiskněte výsledky vyhledávání synonym
.NET API pro vyhledávání synonym ve více souborech
GroupDocs.Search poskytuje rozhraní .NET API, které umožňuje vyhledávat libovolné slovo a jeho synonyma ve více souborech zadané složky. Budu používat toto API v ukázaných příkladech tohoto článku. Umožňuje vám prohledávat velký seznam formátů dokumentů. Kromě hledání synonym podporuje GroupDocs.Search for .NET také některé další techniky vyhledávání, které zahrnují:
- Fuzzy vyhledávání
- Vyhledávání rozlišující malá a velká písmena
- Vyhledávání homofonů
- Hledání regulárních výrazů
- Vyhledávání divokých karet
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
Najít synonyma ve více souborech pomocí C#
Kroky ukazují, jak vyhledávat synonyma (slova s podobným významem) v souborech ve složce pomocí C#.
- Definujte vyhledávací dotaz, indexovou složku a složku dokumentu.
- Vytvořte index s definovanou složkou indexu pomocí třídy Index.
- Přidejte složku dokumentu do rejstříku.
- Vytvořte SearchOptions a nastavte UseSynonymSearch na true.
- Zavolejte metodu Search třídy Index a předejte možnosti dotazu a vyhledávání.
- Chcete-li souhrn vytisknout, použijte vlastnosti obnoveného SearchResult.
Zdrojový kód ukazuje, jak najít všechna synonyma ve všech souborech složky pomocí C#
// Hledání synonym ve více souborech a složkách pomocí C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Vytvoření indexu v zadané složce
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// Vytvoření objektu možností hledání
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling Synonym Search
// Hledejte slovo 'make'
// Kromě slova 'make' se budou hledat i synonyma "dělat, způsobit, dostat, ..."
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
Query: **make**
Documents: 2
Occurrences: 22
Tisk výsledků hledání synonym pomocí C#
Následující kroky vytisknou výsledky podrobně po získání všech synonym a jejich počtu výskytů v každém dokumentu.
- Procházejte výsledky vyhledávání, které jsou načteny pomocí výše uvedeného kódu.
- Získejte každý FoundDocument pomocí metody GetFoundDocument.
- Vytiskněte příslušné vlastnosti každého FoundDocumentu.
- Procházejte FoundFields v rámci každého FoundDocumentu a získejte Found Document Field.
- Z každého FoundDocumentField můžete získat jeho podmínky a počet výskytů v každém dokumentu.
Následující zdrojový kód vytiskne výsledky hledání synonym spolu s počtem výskytů každého hledaného výrazu pomocí C#.
// Tisk výsledků hledání synonym v C#
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
for (int i = 0; i < result.DocumentCount; i++)
{
FoundDocument document = result.GetFoundDocument(i);
Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
Console.WriteLine("Occurrences: " + document.OccurrenceCount);
for (int j = 0; j < document.FoundFields.Length; j++)
{
FoundDocumentField field = document.FoundFields[j];
Console.WriteLine("\tField: " + field.FieldName);
Console.WriteLine("\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" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
}
}
}
}
Query: **make**
Documents: 2
Total occurrences: 22
Document: C:/documents/sample.docx
Occurrences: 6
Field: content
Occurrences: 6
make 1
get 2
cause 1
do 2
Document: C:/documents/sample.txt
Occurrences: 16
Field: content
Occurrences: 16
get 4
cause 1
do 11
Hledejte synonyma a výsledky tisku pomocí C# – kompletní kód
Zde je úplný zdrojový kód, který nejprve najde všechna synonyma podle zadaného dotazu a poté vytiskne všechny výskyty všech synonym v každém dokumentu v této složce pomocí C#.
// Vyhledávejte synonyma ve více souborech a složkách a tiskněte výsledky pomocí C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Vytvoření indexu v zadané složce
Index index = new Index(indexFolder);
// Indexování dokumentů ze zadané složky
index.Add(documentsFolder);
// Vytvoření objektu možností hledání
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling synonym search
// Hledejte slovo 'make'
// Kromě slova 'make' se budou hledat i slova "do, způsobit, dostat, ..."
SearchResult result = index.Search(query, options);
// Tisk výsledku
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
for (int i = 0; i < result.DocumentCount; i++)
{
FoundDocument document = result.GetFoundDocument(i);
Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
Console.WriteLine("Occurrences: " + document.OccurrenceCount);
for (int j = 0; j < document.FoundFields.Length; j++)
{
FoundDocumentField field = document.FoundFields[j];
Console.WriteLine("\tField: " + field.FieldName);
Console.WriteLine("\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" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
}
}
}
}
Závěr
Na závěr jste se naučili, jak najít konkrétní slova a také jejich synonyma ve více dokumentech v zadané složce pomocí C#. Můžete si zkusit vyvinout vlastní .NET aplikaci pro vyhledávání libovolného slova a jeho synonym ve více souborech.
Další informace o rozhraní .NET Search Automation API naleznete v dokumentaci. Chcete-li si tyto funkce vyzkoušet, můžete se podívat na příklady v úložišti GitHub. Kontaktujte nás s jakýmkoliv dotazem prostřednictvím fóra.