هل تساءلت يومًا عن كيفية البحث بسهولة عبر الكثير من الملفات أو التغلب على تحدي البحث داخل الملفات عبر مجلدات مختلفة؟ تحتوي هذه المقالة على الإجابات التي تبحث عنها. دعنا نتعمق في عالم البحث عن النص ونستكشف كيفية البحث عن نصوص أو عبارات مختلفة في ملفات مختلفة عبر مجلدات متنوعة باستخدام 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 مميزة لكل مستند تم العثور عليه.

نتائج البحث عن النص المميزة بتنسيق 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]);
            }
        }
    }
}

الحصول على ترخيص مجاني أو نسخة تجريبية مجانية

رخصة مجانية

احصل على ترخيص مؤقت مجانًا لاستكشاف هذه المكتبة دون قيود.

تجربة مجانية

يمكنك تنزيل النسخة التجريبية المجانية من قسم التنزيلات.

.NET API للبحث داخل الملفات والمجلدات

خاتمة

في هذه المقالة، قمنا بفحص النص للبحث عن نصوص مختلفة في العديد من الملفات عبر عدة مجلدات باستخدام C#. بدءًا من استعلام البحث، استكشفنا ملفات ومجلدات متعددة، مع تسليط الضوء على الكلمات أو العبارات التي تم البحث عنها في ملفات HTML المعنية.

للحصول على تفاصيل شاملة حول واجهة برمجة التطبيقات (API)، يُنصح القراء بالرجوع إلى الوثائق.

يمكن توجيه أية استفسارات أو مناقشات إضافية إلى المنتدى المتاح.

أنظر أيضا