کلماتی که صداهای یکسانی دارند اما از نظر معانی یا املای متفاوت هستند، هموفون هستند. در حالی که کلماتی که املای یکسانی دارند، اما از نظر معنی یا تلفظ متفاوت هستند، Homographs هستند. همنام ها می توانند هموفون یا همگرا باشند. یا هر دو. بیایید آن را اشتباه نگیریم و خودکار نکنیم. در این مقاله، یاد خواهید گرفت که چگونه با استفاده از سی شارپ، همفون ها را در چندین سند جستجو کنید.

با استفاده از GroupDocs هموفون ها را در فایل ها جستجو کنید

موضوعات زیر در زیر پوشش داده خواهد شد:

NET API برای جستجوی هموفون در چندین فایل

GroupDocs.Search .NET API را نشان می دهد (GroupDocs.Search for.NET) که امکان جستجوی کلمات و همفون آنها را در چندین فایل پوشه مشخص شده فراهم می کند. ما از این API در مثال های این مقاله استفاده خواهیم کرد. می تواند محتوا را با فرمت های مختلف جستجو کند. همراه با یافتن همفون ها، API از بسیاری از راه های دیگر برای جستجو بر اساس نیاز پشتیبانی می کند. برخی از تکنیک های جستجوی پشتیبانی شده به شرح زیر است:

  • جستجوی مترادف
  • جستجوی عبارت
  • جستجوی فازی
  • جستجوی حساس به حروف کوچک و بزرگ
  • جستجوی عبارات منظم
  • جستجوی کارت وحشی

می‌توانید نصب‌کننده DLL یا MSI را از بخش دانلودها دانلود کنید یا API را از طریق NuGet در برنامه NET خود نصب کنید. /packages/groupdocs.search).

PM> Install-Package GroupDocs.Search

یافتن هموفون در چندین فایل با استفاده از C#

مراحل زیر راهنمایی می‌کند که چگونه می‌توانیم همفون‌ها (کلمات با صدای/تلفظ مشابه) را در فایل‌های داخل یک پوشه با استفاده از C# جستجو کنیم.

  • عبارت جستجو، پوشه نمایه سازی و پوشه ای که فایل های شما را در بر می گیرد را تعریف کنید.
  • Index را با پوشه فهرست تعریف شده ایجاد کنید.
  • پوشه سند را به فهرست ایجاد شده اضافه کنید.
  • SearchOptions را تعریف کنید و [UseHomophoneSearch] را تنظیم کنید (https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch) به درست است.
  • با فراخوانی روش Search با گزینه های جستجو و جستجو، همه همفون ها را جستجو کنید.
  • از خلاصه با استفاده از ویژگی های [SearchResult] بازیابی شده استفاده کنید (https://apireference.groupdocs.com/search/net/groupdocs.search.results/searchresult).

کد منبع C# زیر تمام همفون ها را در تمام فایل های یک پوشه تعریف شده پیدا می کند. علاوه بر این، می‌توانید فرهنگ لغت همفون خود را مدیریت کنید (https://docs.groupdocs.com/search/net/homophone-dictionary/).

// جست و جوی همفون ها در چندین فایل و پوشه با استفاده از سی شارپ
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// ایجاد نمایه در پوشه مشخص شده
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// ایجاد یک شی گزینه های جستجو
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// جستجوی کلمه "درست"
// علاوه بر کلمه "راست"، کلمات "Rite, Wright, Writ, ..." نیز جستجو می شود
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

خروجی کد بالا به صورت زیر است:

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

برای ارائه نتایج جستجوی همفون، پس از دریافت همه همفون‌ها و تعداد دفعات آنها در هر سند، مراحل زیر را دنبال کنید.

  • نتایج جستجوی همفون را که قبلاً بازیابی شده‌اند طی کنید.
  • هر سند را به عنوان FoundDocument با استفاده از GetFoundDocument() دریافت کنید روش net/groupdocs.search.results/searchresult/methods/getfounddocument).
  • در صورت نیاز از ویژگی های هر FoundDocument استفاده کنید.
  • اکنون، FoundFields FoundDocument را برای دریافت FoundDocumentField طی کنید. com/search/net/groupdocs.search.results/founddocumentfield).
  • در نهایت، از هر FoundDocumentField، شرایط آن و وقوع آنها را در هر سند دریافت کنید.

کد منبع 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);
        // چاپ اصطلاحات یافت شده
        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: **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

جستجوی هوموفون و نتایج چاپ با استفاده از C# - کد کامل

کد C# زیر مراحل بالا را خلاصه می کند، ابتدا همه همفون ها را مطابق پرس و جو پیدا می کند و سپس همه موارد همفون را در هر سند در پوشه ارائه شده چاپ می کند.

// هموفون ها را در چندین فایل و پوشه جستجو کنید و سپس نتایج را با استفاده از C# چاپ کنید.
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// ایجاد نمایه در پوشه مشخص شده
Index index = new Index(indexFolder);
// نمایه سازی اسناد از پوشه مشخص شده
index.Add(documentsFolder);

// ایجاد یک شی گزینه های جستجو
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// جستجوی کلمه "درست"
// علاوه بر کلمه "راست"، کلمات "Rite, Wright, Writ, ..." نیز جستجو می شود
SearchResult result = index.Search(query, options);

// چاپ نتیجه
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);
        // چاپ اصطلاحات یافت شده
        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]);
            }
        }
    }
}

نتیجه

به طور خلاصه، شما یاد گرفته اید که چگونه کلمات و همفون آنها را از چندین سند پوشه مشخص شده با استفاده از C# پیدا کنید. می توانید با استفاده از GroupDocs.Search for .NET برنامه .NET خود را برای جستجوی همفون ها در چندین فایل بسازید.

درباره NET Search Automation API از اسناد بیشتر بیاموزید. برای تجربه ویژگی‌ها، می‌توانید به نمونه‌های موجود در مخزن GitHub نگاهی بیندازید. برای هرگونه سوال از طریق forum با ما تماس بگیرید.

همچنین ببینید