در مقاله ای دیگر دیدیم که مترادف ها چیست و [چگونه تمام مترادف های هر کلمه ای را بدست آوریم]. در مورد پیدا کردن این مترادف ها در اسناد مختلف چطور؟ این مقاله شما را در مورد چگونگی جستجوی مترادف های هر پرس و جو (کلمه) خاص در چندین فایل با استفاده از C# راهنمایی می کند.

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

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

GroupDocs.Search API .NET را فراهم می کند که امکان جستجوی هر کلمه و مترادف های آن را در چندین فایل پوشه مشخص شده فراهم می کند. من از این API در نمونه های نشان داده شده در این مقاله استفاده خواهم کرد. این به شما امکان می‌دهد [در فهرست بزرگی از قالب‌های سند7 جستجو کنید. همراه با یافتن مترادف ها، GroupDocs.Search برای .NET از تکنیک های جستجوی دیگری نیز پشتیبانی می کند که عبارتند از:

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

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

PM> Install-Package GroupDocs.Search

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

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

  • عبارت جستجو، پوشه فهرست و پوشه سند را تعریف کنید.
  • با استفاده از کلاس Index فهرستی را با پوشه شاخص تعریف شده ایجاد کنید.
  • پوشه سند را به فهرست اضافه کنید.
  • SearchOptions را ایجاد کنید و UseSynonymSearch را روی true تنظیم کنید.
  • متد Search کلاس Index را فراخوانی کنید و گزینه‌های query و search را ارسال کنید.
  • برای چاپ خلاصه، از ویژگی های SearchResult بازیابی شده استفاده کنید.

کد منبع نشان می دهد که چگونه می توان تمام مترادف ها را در تمام فایل های یک پوشه با استفاده از C# پیدا کرد.

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

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

// ایجاد یک شی گزینه های جستجو
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling Synonym Search

// جستجوی کلمه "ساخت"
// علاوه بر کلمه "ساختن"، مترادف "انجام، علت، گرفتن، ..." نیز جستجو می شود.
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

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

  • نتایج جستجویی را که با استفاده از کد بالا بازیابی می‌شوند، طی کنید.
  • هر FoundDocument را با استفاده از روش GetFoundDocument دریافت کنید.
  • ویژگی های مشابه هر FoundDocument را چاپ کنید.
  • FoundFields را در هر FoundDocument طی کنید تا Found Document Field را دریافت کنید.
  • از هر 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: **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

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

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

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

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

// ایجاد یک شی گزینه های جستجو
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling synonym search

// جستجوی کلمه "ساخت"
// علاوه بر کلمه "ساختن"، کلمات "انجام، علت، دریافت، ..." نیز جستجو می شود
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# پیدا کنید. می توانید سعی کنید برنامه .NET خود را برای جستجوی هر کلمه و مترادف های آن در چندین فایل ایجاد کنید.

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

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