Słowa, które brzmią tak samo, ale różnią się znaczeniem lub pisownią, to homofony. Natomiast słowa, które mają taką samą pisownię, ale różnią się znaczeniem lub wymową, to homografy. Homonimy mogą być homofonami lub homografami; lub obie. Nie mylmy tego i nie automatyzujmy. W tym artykule dowiesz się, jak wyszukiwać homofony w wielu dokumentach przy użyciu języka C#.

Wyszukuj homofony w plikach za pomocą GroupDocs

Poniżej zostaną omówione następujące tematy:

Interfejs API platformy .NET do wyszukiwania homofonów w wielu plikach

GroupDocs.Search przedstawia interfejs API .NET (GroupDocs.Search for .NET) który umożliwia wyszukiwanie słów i ich homofonów w wielu plikach określonego folderu. Użyjemy tego interfejsu API w przykładach w tym artykule. Może przeszukiwać zawartość różnych różnych formatów. Oprócz znajdowania homofonów interfejs API obsługuje wiele innych sposobów wyszukiwania zgodnie z wymaganiami. Oto niektóre z obsługiwanych technik wyszukiwania:

  • Wyszukiwanie synonimów
  • Wyszukiwanie fraz
  • Wyszukiwanie rozmyte
  • Wyszukiwanie z uwzględnieniem wielkości liter
  • Wyszukiwanie wyrażeń regularnych
  • Wyszukiwanie dzikich kart

Możesz pobrać pliki DLL lub instalator MSI z sekcji pobierania lub zainstalować interfejs API w swojej aplikacji .NET za pośrednictwem [NuGet](https://www.nuget.org /packages/groupdocs.search).

PM> Install-Package GroupDocs.Search

Znajdź homofony w wielu plikach przy użyciu C#

Poniższe kroki opisują, w jaki sposób możemy wyszukiwać homofony (słowa o podobnym brzmieniu/wymowie) w plikach w folderze przy użyciu języka C#.

  • Zdefiniuj zapytanie wyszukiwania, folder indeksowania i folder zawierający pliki.
  • Utwórz Index ze zdefiniowanym folderem indeksu.
  • Dodaj folder dokumentu do utworzonego indeksu.
  • Zdefiniuj SearchOptions i ustaw [UseHomophoneSearch](https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch) na true.
  • Przeszukaj wszystkie homofony, wywołując metodę Search z opcjami zapytania i wyszukiwania.
  • Użyj podsumowania, korzystając z właściwości pobranego SearchResult.

Poniższy kod źródłowy C# znajduje wszystkie homofony we wszystkich plikach zdefiniowanego folderu. Dodatkowo możesz zarządzać swoim słownikiem homofonów.

// Wyszukaj homofony w wielu plikach i folderach za pomocą C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Tworzenie indeksu w określonym folderze
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Tworzenie obiektu opcji wyszukiwania
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Wyszukaj słowo „właściwy”
// Oprócz słowa „prawo” wyszukiwane będą również słowa „rytuować, pisać, pisać,…”
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

Dane wyjściowe powyższego kodu są następujące:

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

Wykonaj poniższe kroki po uzyskaniu wszystkich homofonów i liczby ich wystąpień w każdym dokumencie, aby przedstawić wyniki wyszukiwania homofonów.

  • Przejrzyj wyniki wyszukiwania homofonów, które zostały pobrane wcześniej.
  • Pobierz każdy dokument jako FoundDocument za pomocą [GetFoundDocument()](https://apireference.groupdocs.com/search/ net/groupdocs.search.results/searchresult/methods/getfounddocument).
  • Użyj właściwości każdego FoundDocument zgodnie z wymaganiami.
  • Teraz przejdź przez FoundFields FoundDocument, aby uzyskać [FoundDocumentField](https://apireference.groupdocs. com/search/net/groupdocs.search.results/founddocumentfield).
  • Na koniec z każdego pola FoundDocumentField uzyskaj jego Warunki i ich wystąpienia w każdym dokumencie.

Poniższy kod źródłowy języka C# drukuje wyniki wyszukiwania homofonów wraz z liczbą wystąpień każdego wyszukiwanego terminu.

// Drukowanie wyników wyszukiwania homofonów w języku 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);
        // Drukowanie znalezionych terminów
        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]);
            }
        }
    }
}

Poniżej przedstawiono dane wyjściowe powyższego przykładu kodu.

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

Wyszukiwanie homofonów i drukowanie wyników przy użyciu języka C# — kompletny kod

Poniższy kod C# podsumowuje powyższe kroki, najpierw znajduje wszystkie homofony zgodnie z zapytaniem, a następnie drukuje wszystkie wystąpienia wszystkich homofonów w każdym dokumencie w podanym folderze.

// Wyszukaj homofony w wielu plikach i folderach, a następnie wydrukuj wyniki za pomocą C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Tworzenie indeksu w określonym folderze
Index index = new Index(indexFolder);
// Indeksowanie dokumentów z określonego folderu
index.Add(documentsFolder);

// Tworzenie obiektu opcji wyszukiwania
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Wyszukaj słowo „właściwy”
// Oprócz słowa „prawo” wyszukiwane będą również słowa „rytuować, pisać, pisać,…”
SearchResult result = index.Search(query, options);

// Drukowanie wyniku
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);
        // Drukowanie znalezionych terminów
        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]);
            }
        }
    }
}

Wniosek

Podsumowując, nauczyłeś się znajdować słowa i ich homofony z wielu dokumentów określonego folderu za pomocą C#. Możesz spróbować zbudować własną aplikację .NET do wyszukiwania homofonów w wielu plikach za pomocą GroupDocs.Search for .NET.

Dowiedz się więcej o interfejsie .NET Search Automation API z dokumentacji. Aby zapoznać się z funkcjami, możesz przejrzeć dostępne przykłady w repozytorium GitHub. Skontaktuj się z nami w każdej sprawie za pośrednictwem forum.

Zobacz też