بحث غامض باستخدام C# .NET
  • لا تعرف اللون أو تهجئة الألوان المستخدمة في المستند.
  • البحث عن “جون”، ولكن من الممكن تهجئته كـ “جون” أو ربما “جون”.
  • تحديد موقع “الولايات المتحدة الأمريكية” عندما يقوم المستخدم بإدخال “الولايات المتحدة الأمريكية”.
  • الكلمة أو العبارة التي تبحث عنها يمكن أن تحتوي على “خطأ”، عفوًا، إنها مرة أخرى “خطأ”.

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

مكتبة البحث الغامضة في C#

بالنسبة إلى Fuzzy Search، سنستخدم واجهة برمجة التطبيقات GroupDocs.Search for .NET. وهذا يسمح بدرجة معينة من التسامح في التهجئة، مما يجعلها فعالة في استيعاب الاختلافات اللغوية الإقليمية مثل تلك الموجودة بين الإنجليزية البريطانية والأمريكية.

تمكننا هذه المكتبة من البحث برمجيًا عن النص في مجموعة واسعة من تنسيقات الملفات، مثل مستندات Word (DOC وDOCX) وجداول البيانات (XLS وXLSX) والعروض التقديمية (PPT وPPTX) وملفات PDF وملفات Markup (HTML وXML) تخفيض السعر (MD)، والكتب الإلكترونية (EPUB، CHM، FB2)، ورسائل البريد الإلكتروني (MSG، EML)، ومستندات OneNote، وأرشيفات ZIP.

لمعرفة جميع أنواع الملفات التي يمكنك العمل بها، راجع الوثائق.

يمكنك اختيار الحصول على ملفات DLL أو مثبت MSI من قسم التنزيل أو إضافة واجهة برمجة التطبيقات إلى برنامج .NET الخاص بك باستخدام NuGet.

دعونا نقوم بالبحث الغامض في الملفات باستخدام C#

اتبع هذه الخطوات لإجراء بحث غامض في ملفات متعددة بتنسيقات ملفات مختلفة داخل المجلدات باستخدام C#:

  • قم بإنشاء فهرس عن طريق توفير مسار المجلد.
  • أضف مسار المجلد الأصلي لدليل البحث إلى الفهرس الذي تم إنشاؤه.
  • تحديد استعلام البحث.
  • قم بتنشيط البحث الغامض من خلال تمكين الخيار.
  • قم بتعيين مستوى التشابه في الخوارزمية الغامضة كما هو مطلوب.
  • قم بتنفيذ البحث باستخدام طريقة البحث للحصول على نتائج البحث.
  • الآن، يمكنك التكرار على SearchResults لإنشاء المخرجات أو طباعتها كما تريد.

البحث الغامض في كود C# المذكور أدناه يعثر على التطابقات التقريبية للاستعلام المحدد في جميع الملفات عبر جميع المجلدات الفرعية مع نسبة خطأ في التهجئة تبلغ 20%.

// غامض البحث عن ملفات متعددة عبر مجلدات متعددة باستخدام C#

// إنشاء مجلد فهرس وإضافة مجلد المستندات إليه
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);

string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);

هنا، يتم ضبط مستوى التشابه على 0.8، أي تطابق بنسبة 80% وهو ما يتوافق مع 20% من التسامح مع الخطأ. يمكنك ضبط مستوى التسامح عن طريق تعديل مستوى التشابه في الكود.

فيما يلي نتائج البحث الغامضة التي يمكنك الحصول عليها من الكود أعلاه. الأمر بسيط جدًا، ومع ذلك، يتوفر رمز الطباعة أيضًا لاحقًا في هذه المقالة.

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

طباعة نتائج البحث

يوفر كود C# التالي طريقتين لعرض نتائج البحث.

  • قم بتمييز جميع التطابقات التقريبية.
  • طباعة النتائج بتنسيق قابل للقراءة والتحليل
// تمييز وطباعة نتائج البحث لجميع المستندات باستخدام C#
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // الطباعة وجدت الشروط
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}

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

رخصة مجانية

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

تجربة مجانية

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

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

خاتمة

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

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

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


أنظر أيضا