Woorden die hetzelfde klinken maar verschillen in betekenis of spelling zijn homofonen. Terwijl de woorden die hetzelfde spellen, maar verschillen in betekenis of uitspraak homografen zijn. Homoniemen kunnen homofoon of homograaf zijn; of allebei. Laten we het niet verwarren en automatiseren. In dit artikel leert u hoe u homofonen in meerdere documenten kunt doorzoeken met behulp van C#.

Zoek homofonen in bestanden met behulp van GroupDocs

De volgende onderwerpen komen hieronder aan bod:

.NET API voor het zoeken naar homofonen in meerdere bestanden

GroupDocs.Search demonstreert de .NET API (GroupDocs.Search for .NET) waarmee woorden en hun homofonen kunnen worden doorzocht in meerdere bestanden van de opgegeven map. We zullen deze API gebruiken in de voorbeelden van dit artikel. Het kan de inhoud van verschillende formaten doorzoeken. Naast het vinden van de homofonen ondersteunt de API vele andere manieren om naar behoefte te zoeken. Enkele van de ondersteunde zoektechnieken zijn als volgt:

  • Synoniem zoeken
  • Zin zoeken
  • Vage zoekopdracht
  • Hoofdlettergevoelig zoeken
  • Reguliere expressies zoeken
  • Zoeken met wildcards

U kunt de DLL’s of het MSI-installatieprogramma downloaden van de downloads-sectie of de API in uw .NET-applicatie installeren via [NuGet](https://www.nuget.org /packages/groupdocs.zoeken).

PM> Install-Package GroupDocs.Search

Vind homofonen in meerdere bestanden met C#

De volgende stappen laten zien hoe we homofonen (woorden met vergelijkbare klank/uitspraak) in bestanden in een map kunnen doorzoeken met behulp van C#.

  • Definieer de zoekopdracht, een indexeringsmap en de map die uw bestanden bevat.
  • Maak Index met de gedefinieerde indexmap.
  • Voeg de map van het document toe aan de aangemaakte index.
  • Definieer de SearchOptions en stel de [UseHomophoneSearch](https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch) in op true.
  • Doorzoek alle homofonen door de methode Zoeken aan te roepen met de zoek- en zoekopties.
  • Gebruik de samenvatting met behulp van de eigenschappen van het opgehaalde SearchResult.

De volgende C#-broncode vindt alle homofonen in alle bestanden van een gedefinieerde map. Bovendien kunt u uw homofoonwoordenboek beheren.

// Zoek homofonen in meerdere bestanden en mappen met behulp van C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Een index maken in de opgegeven map
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Een object met zoekopties maken
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Zoek op het woord 'juist'
// Naast het woord 'right' wordt er ook gezocht op de woorden 'rite, wright, write, ...'
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

De uitvoer van de bovenstaande code is als volgt:

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

Volg de onderstaande stappen nadat u alle homofonen en hun aantal voorkomens in elk document hebt verzameld om de zoekresultaten voor homofonen te presenteren.

  • Doorloop de homofoon-zoekresultaten die eerder zijn opgehaald.
  • Haal elk document op als FoundDocument met behulp van de [GetFoundDocument()](https://apireference.groupdocs.com/search/ net/groupdocs.search.results/searchresult/methods/getfounddocument) methode.
  • Gebruik de eigenschappen van elk FoundDocument zoals vereist.
  • Doorloop nu de FoundFields van FoundDocument om [FoundDocumentField](https://apireference.groupdocs. com/search/net/groupdocs.search.results/founddocumentfield).
  • Haal ten slotte van elk FoundDocumentField de voorwaarden en hun voorkomen binnen elk document op.

De volgende C#-broncode drukt de homofoon-zoekresultaten samen met het aantal keren dat elke gezochte term voorkomt.

// De homofoonzoekresultaten afdrukken in 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);
        // Gevonden termen afdrukken
        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]);
            }
        }
    }
}

Het volgende is de uitvoer van het bovenstaande codevoorbeeld.

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

Zoeken naar homofonen en afdrukresultaten met behulp van C# - Volledige code

De volgende C#-code somt de bovenstaande stappen op, vindt eerst alle homofonen volgens de query en drukt vervolgens alle exemplaren van alle homofonen af in elk document in de opgegeven map.

// Zoek naar homofonen in meerdere bestanden en mappen en druk de resultaten vervolgens af met C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Een index maken in de opgegeven map
Index index = new Index(indexFolder);
// Documenten uit de opgegeven map indexeren
index.Add(documentsFolder);

// Een object met zoekopties maken
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Zoek op het woord 'juist'
// Naast het woord 'right' wordt er ook gezocht op de woorden 'rite, wright, write, ...'
SearchResult result = index.Search(query, options);

// Het resultaat printen
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);
        // Gevonden termen afdrukken
        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]);
            }
        }
    }
}

Conclusie

Kortom, je hebt geleerd hoe je de woorden en hun homofonen kunt vinden uit de meerdere documenten van de opgegeven map met behulp van C#. U kunt proberen uw eigen .NET-toepassing te bouwen voor het zoeken naar homofonen in meerdere bestanden met behulp van GroupDocs.Search for .NET.

Lees meer over de .NET Search Automation API in de documentatie. Om de functies te ervaren, kun je de beschikbare voorbeelden bekijken in de GitHub repository. Bereik ons voor elke vraag via het forum.

Zie ook