1: لمحة عامة Overview – لوسين Zend Search Lucene

السلام عليكم ورحمة الله وبركاته

سنتابع اليوم حديثنا بمقدمة عن مكتبة لوسين.

Zend_Search_Lucene : عبارة عن محرك بحث نصي تمت كتابته بشكل كامل باستخدام PHP 5.

باختصار تقوم فكرة البحث باستخدام مكتبة لوسين, على تخزين محتويات قاعدة المعطيات على شكل ملفات تخزن ضمن السيرفر server , اي ان مكتبة لوسين تقوم بكاش للمعطيات, وبالتالي يتم البحث ضمن هذه الملفات بدل من البحث ضمن قاعدة المعطيات.

نسمي هذه الملفات المخزنة التي ينتجها لوسين بدلا عن قاعدة المعطيات باسم : الفهرس Index .

ملاحظة: ستيم استخدام كلمة الفهرس Index كثيرا فيما يلي, فارجو الانتباه لمعناها الوارد فيما سبق.

إذن : العملية بمثابة كاش لمعلومات قاعدة المعطيات – ان جاز التعبير.

lucene vs db search

مقارنة بين عمل مكتبة لوسين في البحث وبين عمل قاعدة المعطيات Lucene vs DB

وبما انه يعتمد في عمله على تخزين الفهرس Index ضمن ملفات نظامية عادية, وبذلك فإن بإمكانه اضافة امكانيات البحث النصيه هذه تقرييبا إلى اي موقع مبرمج بواسطة php.

يدعم Zend_Search_Lucene الميزات التالية :

  • البحث المصنف – اي ان النتائج الأفضل في عملية البحث يتم اظهارها في مقدمة النتائج الاخرى.
  • يدعم اشكال استعلامات مختلفة:
    • استعلامات البحث عن جمل phrase queries
    • الاستعلامات المنطقية Boolean queries
    • استعلامات البحث عن كلمات غير مكتملة باستخدام المحارف البديلة wildcard queries
    • الاستعلامات المقاربة, اي البحث مثلا عن جملة وان كانت مفردات هذه الجملة تبعد عن بعضها مسافات معينة وليست متجاورة بشكل كامل proximity queries
    • استعلامات البحث ضمن مجال محدد (من الارقام, من الكلمات, …)Range queries
    • والعديد من اشكال الاستعلامات الاخرى.
  • امكانية البحث ضمن حقول محددة – على سبيل المثال البحث مثلا فقط ضمن حقل العنوان والمؤلف.

بنية محرك لوسين

components

يتألف محرك بحث لوسين من المكونات التالية :

  • الفهرس index
    • الوثائق documents
      • الحقول fields
        • ثنائية من مفتاح وقيمة pairs of key-value

كما هو واضح من التسلسل السابق يتالف محرك بحث لوسين من ما يعرف بالفهرسindex , الذي بدوره يتألف من وثائق documents التي هي عبارة عن العناصر الرئيسية المؤلفة للفهرس.

وتنقسم الوثيقة document الواحدة بدورها إلى عدة حقول Fields.

وكل حقل Field بدوره يتألف من ثنائية مفتاح-قيمة key-value

وتحوي هذه الحقول على المكونات التي يتم البحث فيها.

الوثائق والحقول عبارة عن اغراض objects.

يتم تمثيل الوثيقة document ضمن مكتبة لوسين عبر الصف Zend_Search_Lucene_Document class, والاغرض objects من هذا الصف تحوي على مستنسخات instances من الصف Zend_Search_Lucene_Field التي تمثل حقول هذه الوثيقة.

وللعلم فإنه بالامكان اضافة اي نوع من انواع المعلومات الى الفهرس index.

حيث يمكن تخزين اي نمط من انماط المعطيات ضمن حقول الوثيقة document fields, ومن ثم يمكن استعادتهم عبر البحث.

تقع مسؤولية فهرسة المعطيات وانشاء الفهرس على تطبيقك. هذا يعني بأنه يمكن فهرسة اي نوع من انواع مصارد المعطيات التي يمكن الوصول اليها عبر تطبيقك.

على سبيل المثال, بامكاننا فهرسة :

  1. نظام ملفات filesystem
  2. قاعدة معطيات Database
  3. ملفات html

يزودنا صف Zend_Search_Lucene_Field عدد من التوابع الستاتيكية static methods لانشاء الحقول وبميزات وخصواص مختلفة:

كل تابع من هذه التوابع السابقة (بما فيها التابع Zend_Search_Lucene_Field::Binary()) يحتوي على معامل خياري optional parameter يدعى $encoding وذلك بهدف التحكم بطبيعة تخزين المعطيات ضمن الفهرس.

قد يختلف الترميز بين وثيقة واخرى, وكذلك بين حقل واخر ضمن نفس الوثيقة.

2

في حال حذف معامل الترميز, عندها سوف يتم استخدام الترميز المحلي setlocale.

على سبيل المثال:

3

يتم دوما تخزين واستعادة الحقول من الفهرس باستخدام ترميز UTF-8. واي تحويل الى هذا الترميز يتم بشكل اوتوماتيكي.

قد تقوم المحللات 🙂 analyzers (سنتحدث عنها لاحقا) بتحويل ترميز النص من نمط إلى اخر.

في الواقع, المحلل الافتراضي default analyzer يقوم بتحويل النص إلى ترميز’ASCII//TRANSLIT’.

ولكن انتبهوا عند هذه النقطة, فقط تعتمد عملية التحويل في الترميز على الترميز المحلي الحاليlocale .

كما تحدثنا سابقا , فإن الوثيقة تتألف من حقول , والحقل من ثنائية مفتاح-قيمة key-value. واسماء هذه الحقول (اي اسماء المفاتيح) يتم تحديدها عبر التابع addField().

تستخدم نسخة لوسين المكتبوبة بجافا اسم الحقل ‘contents’ كاسم افتراضي ضمن البحث.

بشكل افتراضي, تبحث Zend_Search_Lucene ضمن كل الحقول. ولكن يتمكن تعديل هذا السلوك الافتراضي. سنتطرق لهذا الموضوع لاحقاً.

 

انماط الحقول Fields Types

Keyword : الحقول ذات هذا النمط يتم تخزينها وفهرستها.

هذا يعني بانه يمكن البحث ضمن هذه الحقول بالاضافة إلى استعادتها وعرضها ضمن نتائج البحث.

قيم هذه الحقول لا يتم تجزئيها الى عدة كلمات منفصلة باستخدام ال tokenization.

يستخدم هذا النمط من الحقول عادة لتخزين حقول قاعدة المعطيات المعدودة والمحدودة.

UnIndexed: لا يمكن البحث ضمن هذه الحقول, ولكن تتم اعادتها مع نتائج البحث.

عادة يتم استخدام هذا النمط من الحقول لتخزين الحقول من الانواع التالية في قاعدة المعطيات :

  • Timestamps
  • Primary keys
  • File system paths
  • Other identifiers

Binary : لا يتم تجزء القيم التي تخزن ضمن هذه الحقول ولا يتم فهرستها ايضا, ولكن يتم تخزينها واستعادتها مع نتائج البحث.

يمكن استخدام هذا الحقل لتخزين اي نمط من انماط المعطيات المرمزة على شكل سلسلة محرفية ثنائية binary string, مثل ايقونات الصور.

Text : يتم تخزين هذه القيم وفهرستها, وتقسميها الى كلمات.

يعتبر هذا النمط مناسب لتخزين المعلومات مثل العناوين والمعلومات التي نحتاج للبحث ضمنها واستعادتها مع نتائج البحث.

UnStored : يتم تقسيم قيم هذه الحقول إلى كلمات وفهرستها, ولكن لا يتم تخزينها ضمن الفهرسز

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

4

باستطاعة مكتبة لوسين ان تقوم بفهرسة لانواع مصارد المعطيات التالية :

  • Database
  • HTML Pages
  • Word 2007 Documents
  • PowerPoint 2007 Documents
  • Excel 2007 Documents

ولكننا سوف نقتصر بشرحنا على فهرسة قاعدة المعطيات, ولمن يرغب بالتوسع بامكانه الاطلاع على المزيد عبر الروابط المدرجة.

نتابع في الحلقة القادمة حديثنا عن مكتبة لوسين, حيث سنتطرق إلى موضوع ” بناء الفهارس Building Indexes”.ط

وإلى ذلك الحين, استودعكم الله والسلام عليكم ورحمة الله وبركاته.

مراجع:

 

Advertisements

, , , , ,

  1. أضف تعليق

اترك رد

Please log in using one of these methods to post your comment:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: