جستجوی فازی با استفاده از C#.NET
  • شما نمی دانید چه رنگ یا املای رنگی در سند استفاده شده است.
  • در حال جستجو برای “جان”، اما ممکن است به صورت “Jon” یا شاید “Jhon” نوشته شده باشد.
  • وقتی کاربر «USA» را وارد می‌کند، «USA» را تعیین می‌کند.
  • کلمه یا عبارتی که به دنبال آن هستید می تواند یک “اشتباه” داشته باشد، اوه دوباره یک “اشتباه” است.

در اینجا جستجوی فازی می آید. جستجوی فازی به شما امکان می دهد مطابقت های تقریبی را به جای تطابق دقیق در داده ها پیدا کنید، که امکان انعطاف پذیری در عبارت های جستجو را فراهم می کند. این به ویژه در سناریوهایی با غلط املایی، غلط املایی یا تغییرات در داده ها مفید است. این مقاله نشان می‌دهد که چگونه می‌توان با استفاده از C# یک جستجوی فازی را در چندین سند در پوشه‌ها انجام داد.

کتابخانه جستجوی فازی سی شارپ

برای جستجوی فازی، از GroupDocs.Search for .NET API استفاده می کنیم. این اجازه می دهد تا درجه خاصی از تساهل در املا وجود داشته باشد، و آن را در سازگاری با تغییرات زبان منطقه ای مانند آنهایی که بین انگلیسی بریتانیایی و آمریکایی وجود دارد، موثر می کند.

این کتابخانه به ما این امکان را می‌دهد که به صورت برنامه‌نویسی متن را در طیف گسترده‌ای از فرمت‌های فایل، مانند اسناد Word (DOC، DOCX)، صفحات گسترده (XLS، XLSX)، ارائه‌ها (PPT، PPTX)، فایل‌های PDF، نشانه‌گذاری (HTML، XML) جستجو کنیم. Markdown (MD)، کتاب‌های الکترونیکی (EPUB، CHM، FB2)، پیام‌های ایمیل (MSG، EML)، اسناد OneNote و بایگانی‌های ZIP.

برای پیدا کردن انواع فایل هایی که می توانید با آنها کار کنید، اسناد را بررسی کنید.

می‌توانید نصب‌کننده‌های DLL یا MSI را از بخش دانلود دریافت کنید یا با استفاده از NuGet API را به برنامه دات‌نت خود اضافه کنید.

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

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

  • با ارائه مسیر پوشه، یک Index ایجاد کنید.
  • مسیر پوشه والد دایرکتوری جستجو را به فهرست ایجاد شده اضافه کنید.
  • عبارت جستجو را تعریف کنید.
  • با فعال کردن گزینه، جستجوی فازی را فعال کنید.
  • سطح تشابه را در الگوریتم فازی در صورت نیاز تنظیم کنید.
  • جستجو را با استفاده از روش جستجو برای دریافت نتایج جستجو انجام دهید.
  • اکنون، می‌توانید روی SearchResults تکرار کنید تا خروجی را همانطور که دوست دارید ایجاد یا چاپ کنید.

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

// جستجوی فازی چندین فایل در چندین پوشه با استفاده از سی شارپ

// ایجاد یک پوشه فهرست و اضافه کردن پوشه سند به آن
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);

string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);

در اینجا، سطح شباهت بر روی 0.8 تنظیم شده است، یعنی 80% مطابقت که با 20% تحمل خطا مطابقت دارد. شما می توانید سطح تحمل را با تغییر سطح شباهت در کد تنظیم کنید.

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

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

چاپ نتایج جستجو

کد C# زیر دو راه برای نمایش نتایج جستجوی شما ارائه می دهد.

  • تمام موارد تقریبی را برجسته کنید.
  • نتایج را در قالبی خوانا و قابل تجزیه چاپ کنید
// برجسته کردن و چاپ نتایج جستجو برای همه اسناد با استفاده از C#
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // چاپ اصطلاحات یافت شده
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}

دریافت مجوز رایگان یا آزمایشی رایگان

مجوز رایگان

برای کاوش در این کتابخانه بدون محدودیت، مجوز موقت را به صورت رایگان دریافت کنید.

امتحان رایگان

می توانید از بخش دانلودها آزمایشی رایگان را دانلود کنید.

NET API برای جستجو در فایل‌ها و پوشه‌ها

نتیجه

در این مقاله، ما به رویکرد برنامه‌نویسی C# برای جادوی جستجوی فازی نگاه کردیم تا همه کلمات تطبیق تقریبی را پیدا کنیم، اما با درجه خاصی از تحمل خطا. این ویژگی جستجوی فازی را در سازگاری با تغییرات زبان منطقه ای مانند تغییرات بین انگلیسی بریتانیایی و آمریکایی، اشتباهات تایپی در متن، تغییرات نام و تطابق آوایی موثر می کند.

برای جزئیات جامع در مورد API، به خوانندگان توصیه می شود به اسناد مراجعه کنند.

هر گونه سؤال یا بحث اضافی را می توان به فروم هدایت کرد.


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