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

C# API برای اسکن متن در میان فایل ها و پوشه ها

اکنون، ما از GroupDocs.Search for .NET API برای کاوش متون متعدد در فایل‌های با فرمت‌های مختلف در پوشه‌ها استفاده می‌کنیم. این کتابخانه به ما این امکان را می‌دهد که متن را در طیف گسترده‌ای از قالب‌های فایل، مانند اسناد Word، صفحات گسترده، ارائه‌ها، فایل‌های PDF، فایل‌های نشانه‌گذاری، کتاب‌های الکترونیکی، پیام‌های ایمیل، اسناد One Note و بایگانی‌های ZIP به صورت سیستماتیک اسکن کنیم. برای یک لیست عمیق از فرمت های فایل پشتیبانی شده، به اسناد جامع مراجعه کنید.

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

PM> Install-Package GroupDocs.Search

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

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

  • یک شی Index با مسیر پوشه فهرست مشخص شده ایجاد کنید.
  • پوشه سند والد را با استفاده از روش Add فهرست کنید.
  • یک عبارت جستجو را با چند عبارت یا عبارت تعریف کنید.
  • اسکن متن را با استفاده از روش جستجو اجرا کنید و نتایج را ذخیره کنید.
  • در نتایج جستجو تکرار کنید:
    • هر سند پیدا شده را با استفاده از روش GetFoundDocument بازیابی کنید.
    • هر گونه اطلاعات فایل را برای سند پیدا شده بازیابی یا چاپ کنید.
    • یک OutputAdapter را برای قالب و مسیر دلخواه تنظیم کنید.
    • یک Highlighter برای سند ایجاد کنید.
    • نتایج جستجو را با استفاده از روش Highlight در یک فایل HTML برجسته و خروجی کنید.
// جستجوی متن در چندین فایل با فرمت های مختلف فایل در پوشه های متعدد با استفاده از سی شارپ

// ایجاد نمایه و نمایه سازی اسناد از پوشه مشخص شده
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// جستجوی اسناد حاوی کلمه "آب" یا "غیر" یا عبارت "Lorem ipsum"
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// چاپ نتیجه
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // نتایج سرچ را برجسته کنید
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences
}

کد بالا به شما امکان می دهد به دنبال متون خاص در چندین فایل بگردید و برای هر سند یافت شده فایل های خروجی HTML برجسته ایجاد کنید.

نتایج جستجوی متن برجسته در قالب HTML

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

از نتیجه جستجو، می توانید اطلاعات بیشتری در مورد اسناد یافت شده استخراج کنید.

// چاپ نتیجه
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
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]);
            }
        }
        // چاپ عبارات یافت شده
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

خروجی چاپ نتایج جستجوی بالا که از فایل‌های DOCX، PDF و TXT به دست می‌آید، به صورت زیر خواهد بود:

Documents: 3
Total occurrences: 141
	Document: Lorem ipsum.docx
	Occurrences: 101
		Field: filename
		Occurrences: 101
			lorem ipsum		1
		Field: content
		Occurrences: 101
			non			94
			lorem ipsum		6
	Document: Lorem ipsum.pdf
	Occurrences: 1
		Field: filename
		Occurrences: 1
			lorem ipsum		1
	Document: English.txt
	Occurrences: 39
		Field: content
		Occurrences: 39
			water			39

کد کامل

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

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

// ایجاد نمایه و نمایه سازی اسناد از پوشه مشخص شده
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// جستجوی اسناد حاوی کلمه "آب" یا "غیر" یا عبارت "Lorem ipsum"
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// چاپ نتیجه
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // نتایج سرچ را برجسته کنید
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences

    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]);
            }
        }
        // چاپ عبارات یافت شده
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

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

مجوز رایگان

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

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

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

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

نتیجه

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

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

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

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