آیا تا به حال به این فکر کرده اید که چگونه می توانید به راحتی در میان بسیاری از فایل ها جستجو کنید یا چالش جستجوی درون فایل ها را در پوشه های مختلف انجام دهید؟ این مقاله پاسخ هایی را دارد که شما به دنبال آن هستید. بیایید به دنیای جستجوی متن شیرجه بزنیم و چگونگی جستجوی متون یا عبارات مختلف را در فایل های مختلف در پوشه های مختلف با استفاده از 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 برجسته ایجاد کنید.
چاپ نتایج جستجوی متن
از نتیجه جستجو، می توانید اطلاعات بیشتری در مورد اسناد یافت شده استخراج کنید.
// چاپ نتیجه
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]);
}
}
}
}
دریافت مجوز رایگان یا آزمایشی رایگان
مجوز رایگان
برای کاوش در این کتابخانه بدون محدودیت، یک مجوز موقت به صورت رایگان دریافت کنید.
امتحان رایگان
می توانید از بخش دانلودها آزمایشی رایگان را دانلود کنید.
نتیجه
در این مقاله، اسکن متن را برای جستجوی متون مختلف در فایل های متعدد در چندین پوشه با استفاده از C# بررسی کرده ایم. با شروع جستجوی جستجو، ما در چندین فایل و پوشه کاوش کردیم و کلمات یا عبارات جستجو شده را در فایل های HTML مربوطه برجسته کردیم.
برای جزئیات جامع در مورد API، به خوانندگان توصیه می شود به اسناد مراجعه کنند.
هرگونه سؤال یا بحث اضافی را می توان به فروم موجود هدایت کرد.