هل تساءلت يومًا عن كيفية البحث بسهولة عبر الكثير من الملفات أو التغلب على تحدي البحث داخل الملفات عبر مجلدات مختلفة؟ تحتوي هذه المقالة على الإجابات التي تبحث عنها. دعنا نتعمق في عالم البحث عن النص ونستكشف كيفية البحث عن نصوص أو عبارات مختلفة في ملفات مختلفة عبر مجلدات متنوعة باستخدام C#.
C# API لمسح النص عبر الملفات والمجلدات
الآن، سنستخدم واجهة برمجة التطبيقات GroupDocs.Search for .NET لاستكشاف العديد من النصوص داخل ملفات ذات تنسيقات متنوعة عبر المجلدات. تمكننا هذه المكتبة من مسح النص بشكل منهجي في مجموعة واسعة من تنسيقات الملفات، مثل مستندات Word وجداول البيانات والعروض التقديمية وملفات PDF وملفات العلامات والكتب الإلكترونية ورسائل البريد الإلكتروني ومستندات One Note وأرشيفات ZIP. للحصول على قائمة تفصيلية بتنسيقات الملفات المدعومة، راجع الوثائق الشاملة.
لديك خيار إما الحصول على ملفات DLL أو مثبت MSI من قسم التنزيلات، أو يمكنك تثبيت واجهة برمجة التطبيقات (API) في تطبيق .NET الخاص بك باستخدام NuGet.
PM> Install-Package GroupDocs.Search
البحث عن نصوص متعددة في الملفات عبر المجلدات باستخدام C#
اتبع هذه الخطوات لإجراء بحث نصي في ملفات متعددة داخل مجلدات متعددة باستخدام C# وإنشاء ملفات إخراج HTML مميزة لكل مستند تم العثور عليه.
- قم بإنشاء كائن فهرس بمسار مجلد الفهرس المحدد.
- قم بفهرسة مجلد المستند الأصلي باستخدام طريقة الإضافة.
- حدد استعلام بحث بمصطلحات أو عبارات متعددة.
- قم بتنفيذ مسح النص باستخدام طريقة البحث وقم بتخزين النتائج.
- التكرار من خلال نتائج البحث:
- قم باسترداد كل مستند تم العثور عليه باستخدام طريقة GetFoundDocument.
- قم باسترجاع أو طباعة أي معلومات ملف للمستند الذي تم العثور عليه.
- قم بإعداد OutputAdapter للتنسيق والمسار المطلوبين.
- قم بإنشاء تمييز للمستند.
- قم بتمييز نتائج البحث وإخراجها إلى ملف HTML باستخدام طريقة Highlight.
// البحث عن النص في ملفات متعددة بتنسيقات ملفات مختلفة داخل مجلدات متعددة باستخدام C#
// إنشاء فهرس وفهرسة المستندات من المجلد المحدد
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");
// ابحث عن المستندات التي تحتوي على كلمة "ماء" أو "غير" أو عبارة "لوريم إيبسوم"
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# الكامل الذي يبحث بشكل جماعي في السلاسل النصية والعبارات في ملفات ومجلدات متعددة:
// البحث عن النص في ملفات متعددة بتنسيقات ملفات مختلفة داخل مجلدات متعددة باستخدام C#
// إنشاء فهرس وفهرسة المستندات من المجلد المحدد
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");
// ابحث عن المستندات التي تحتوي على كلمة "ماء" أو "غير" أو عبارة "لوريم إيبسوم"
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)، يُنصح القراء بالرجوع إلى الوثائق.
يمكن توجيه أية استفسارات أو مناقشات إضافية إلى المنتدى المتاح.