Slova, která znějí stejně, ale liší se významem nebo pravopisem, jsou homofony. Zatímco slova, která se píší stejně, ale liší se významem nebo výslovností, jsou homografy. Homonyma mohou být buď homofonní nebo homografní; nebo oboje. Nepleťme si to a neautomatizujme to. V tomto článku se dozvíte, jak vyhledávat homofony ve více dokumentech pomocí C#.

Hledání homofonů v souborech pomocí GroupDocs

Níže budou probrána následující témata:

.NET API pro vyhledávání homofonů ve více souborech

GroupDocs.Search představuje rozhraní .NET API (GroupDocs.Search for .NET) který umožňuje vyhledávat slova a jejich homofony ve více souborech zadané složky. Toto API použijeme v příkladech tohoto článku. Může prohledávat obsah v různých různých formátech. Kromě hledání homofonů API podporuje mnoho dalších způsobů vyhledávání podle požadavků. Některé z podporovaných vyhledávacích technik jsou následující:

  • Synonymum Hledat
  • Hledání frází
  • Fuzzy vyhledávání
  • Vyhledávání rozlišující malá a velká písmena
  • 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](https://www.nuget.org /packages/groupdocs.search).

PM> Install-Package GroupDocs.Search

Najděte homofony ve více souborech pomocí C#

Následující kroky vedou, jak můžeme hledat homofony (slova s podobným zvukem/výslovností) v souborech ve složce pomocí C#.

  • Definujte vyhledávací dotaz, složku indexování a složku obsahující vaše soubory.
  • Vytvořte Index s definovanou složkou indexu.
  • Přidejte složku dokumentu do vytvořeného indexu.
  • Definujte SearchOptions a nastavte [UseHomophoneSearch](https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch) na true.
  • Prohledejte všechny homofony voláním metody Search s možností dotazu a vyhledávání.
  • Použijte shrnutí pomocí vlastností obnoveného SearchResult.

Následující zdrojový kód C# najde všechny homofony ve všech souborech definované složky. Kromě toho můžete spravovat svůj homofonní slovník.

// Prohledávejte homofony ve více souborech a složkách pomocí C#
string query = "right";
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()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Hledejte slovo 'správně'
// Kromě slova „správně“ se budou vyhledávat i slova „rite, wright, write, ...“.
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

Výstup výše uvedeného kódu je následující:

Query: **right**
Documents: 2
Occurrences: 17

Po získání všech homofonů a jejich počtu výskytů v každém dokumentu postupujte podle níže uvedených kroků, abyste zobrazili výsledky vyhledávání homofonů.

  • Procházejte výsledky vyhledávání homofonů, které byly načteny dříve.
  • Získejte každý dokument jako FoundDocument pomocí [GetFoundDocument()](https://apireference.groupdocs.com/search/ net/groupdocs.search.results/searchresult/methods/getfounddocument).
  • Používejte vlastnosti každého FoundDocumentu podle potřeby.
  • Nyní projděte FoundFields FoundDocument a získejte [FoundDocumentField](https://apireference.groupdocs. com/search/net/groupdocs.search.results/founddocumentfield).
  • Nakonec z každého FoundDocumentField získejte jeho podmínky a jejich výskyty v každém dokumentu.

Následující zdrojový kód jazyka C# vytiskne výsledky vyhledávání homofonů spolu s počtem výskytů každého hledaného výrazu.

// Tisk výsledků vyhledávání homofonů 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]);
            }
        }
    }
}

Následuje výstup výše uvedeného příkladu kódu.

Query: **right**
Documents: 2
Total occurrences: 17

Document: C:/documents/sample.docx
Occurrences: 11
    Field: content
    Occurrences: 11
        right             3
        rite               4
        wright           1
        write             3
Document: C:/documents/sample.txt
Occurrences: 6
    Field: content
    Occurrences: 6
        right             4
        write             2

Hledejte homofony a výsledky tisku pomocí C# - Kompletní kód

Následující kód C# shrnuje výše uvedené kroky, nejprve najde všechny homofony podle dotazu a poté vytiskne všechny výskyty všech homofonů v každém dokumentu v poskytnuté složce.

// Prohledejte homofony ve více souborech a složkách a poté vytiskněte výsledky pomocí C#
string query = "right";
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()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Hledejte slovo 'správně'
// Kromě slova „správně“ se budou vyhledávat i slova „rite, wright, write, ...“.
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

Abych to shrnul, naučili jste se najít slova a jejich homofony z více dokumentů zadané složky pomocí C#. Můžete si zkusit vytvořit svou vlastní .NET aplikaci pro vyhledávání homofonů ve více souborech pomocí GroupDocs.Search for .NET.

Další informace o rozhraní .NET Search Automation API najdete v dokumentaci. Chcete-li vyzkoušet funkce, můžete se podívat na dostupné příklady v úložišti GitHub. V případě jakéhokoli dotazu nás kontaktujte prostřednictvím fóra.

Viz také