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

پس از این، می‌توانید تکنیک‌های جستجوی مختلفی را برای جستجوی متن در اسناد پردازش کلمه، صفحات گسترده، ارائه‌ها، فایل‌های HTML، کتاب‌های الکترونیکی PDF، پیام‌های ایمیل، بایگانی‌های ZIP و بسیاری فایل‌های دیگر پیاده‌سازی کنید.

یکی از نمونه‌های پیاده‌سازی جستجوی تمام متن در پردازنده‌های ورد و ویرایشگرهای متن است. این به شما کمک می کند تا یک عبارت یا کلمه را در هر جایی از سند پیدا کنید.

جستجوی کامل متن

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

NET API برای جستجوی متن

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

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

PM> Install-Package GroupDocs.Search

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

دو مرحله اصلی برای انجام یا اجرای جستجوی متن کامل وجود دارد.

  • نمایه سازی
  • جستجو را انجام دهید

نمایه سازی

برای اینکه امکان جستجوی فوری در هزاران سند با فرمت‌های یکسان یا متفاوت داشته باشید، باید یک فهرست ایجاد کنید و این اسناد را به آن اضافه کنید.

شاخص چیست؟

یک فهرست دارای متن اسکن شده از تمام اسناد است. بنابراین، زمانی که می‌خواهید عملیات جستجو را انجام دهید (جستجوی یک پرسش خاص)، به جای متن اسناد اصلی، فقط به فهرست ارجاع داده می‌شود.

ایجاد شاخص

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

Index index = new Index("indexPath/FolderName/");

هنگامی که اسناد نمایه می شوند، نمایه برای رسیدگی به درخواست های جستجو آماده است. در زیر برخی از تکنیک های جستجو که می توان با استفاده از GroupDocs.Search برای .NET انجام داد آمده است:

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

انجام جستجو در C#

با یک مورد استفاده شروع کنید. اگر چندین سند (Word، PDF، Excel و HTML) داریم و می‌خواهیم یک جستجوی خاص (عبارات جستجوی «ویدئو») روی آنها انجام دهیم.

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

  • پوشه اسناد منبع و پوشه فهرست را تعیین کنید.
  • رشته پرس و جو را آماده کنید.
  • Index را با استفاده از پوشه فهرست ایجاد کنید.
  • پوشه اسناد منبع را به فهرست اضافه کنید.
  • با استفاده از کلاس روش Search Index جستجو را انجام دهید.
  • پیمایش و نتایج جستجو برای ویژگی های هر سند.

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

// جستجوی متن پرس و جو در تمام اسناد پوشه ارائه شده در سی شارپ
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

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

// جستجو در فهرست
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// هر سند از نتایج جستجو را طی کنید
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

مسیر سند و تعداد موارد جستجو را در تمام اسناد موجود در پوشه سند دریافت خواهیم کرد. در اینجا اسکرین شات برای تجسم وجود دارد.

خروجی متن جستجوی کامل

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

بیایید اکنون همان جستجوی متنی را انجام دهیم، اما این بار تمام رخدادهایی را که با پرس و جو مطابقت دارند برجسته می کنیم.

مراحل زیر نحوه برجسته کردن نتایج جستجوی متنی را نشان می دهد:

  • رشته پرس و جو را آماده کنید.
  • Index را با استفاده از مسیر پوشه فهرست ایجاد کنید.
  • پوشه اسناد منبع را به فهرست اضافه کنید.
  • با استفاده از روش Search پوشه سند را جستجو کنید.
  • در حین پیمایش نتایج جستجو، Highlighter را ایجاد کنید.
  • از روش Highlight کلاس Index برای برجسته کردن نتایج جستجو استفاده کنید.

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

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// یک فهرست در پوشه مشخص شده ایجاد کنید و پوشه اسناد را به Index اضافه کنید
Index index = new Index(indexFolder);
index.Add(documentFolder);

// کلمه پرس و جو را جستجو کنید
SearchResult result = index.Search(query);

// تمام موارد موجود در متن را برجسته کنید
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
                    
    string path = indexFolder + "Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    Highlighter highlighter = new HtmlHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
}

به عنوان یک خروجی، چندین فایل HTML دریافت خواهیم کرد. هر فایل محتوای یک سند متفاوت (مانند excel.xlsx، source.docx، target.docx) را با عبارت/کلمه جستجوی برجسته نشان می‌دهد. در زیر خروجی HTML برجسته یک فایل DOCX ارائه شده است.

نتایج جستجوی متن کامل را در محتوا برجسته کنید

مجوز API رایگان دریافت کنید

برای استفاده از API بدون محدودیت ارزیابی، می توانید یک مجوز موقت رایگان دریافت کنید.

نتیجه

در این مقاله، ما یاد گرفتیم که با استفاده از سی شارپ، متن را در چندین سند یک پوشه جستجو کنیم. علاوه بر این، نحوه برجسته کردن متن نتایج جستجو را به صورت برنامه‌نویسی در قالب HTML مورد بحث قرار دادیم.

ممکن است با استفاده از مستندات درباره API اطلاعات بیشتری کسب کنید. نمونه‌های بسیار بیشتری در GitHub موجود است. برای سؤالات، از طریق [فروم 21 با ما تماس بگیرید.

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