الأحد، 16 أكتوبر 2011

الجزء الثالث: البحث في الشيربوينت 2010 - تخصيص البحث المتقدم (Advanced Search) ونتائج البحث (Result Page)

هذه المقالة هي الجزء الثالث والأخير من سلسلة مقالات تحت عنوان"تخصيص البحث في الشيربوينت 2010". في الجزء الأول تحدثنا عن ميزات البحث بشكل عام ومكونات محرك البحث وفي الجزء الثاني تحدثنا عن كيفية تفعيل البحث وتخصيص إعدادات الـ Crawler ونطاقات البحث Search Scopes، كما تحدثنا عن الإعدادات والتخصيص بأبسط صورها ليتسنى للمبتدئين فهم أساس هذه الإعدادات ومن ثم الانطلاق لمراحل متقدمه في تخصيص الإعدادات حسب الطلب.

في هذا المقال سنتحدث عن كيفية تخصيص البحث المتقدم وإضافة حقول (Metadata) في خصائص البحث المتقدم ليظهر في القائمة المنسدلة (الفلتر) الخاصة بالحقول وكذلك سنتحدث عن طريقة تخصيص نتائج البحث لتظهر بالشكل المطلوب حسب الحالة وحسب المشروع.
أحيانا تستدعي الحالة اختيار حقل معين للبحث فيه وذلك لتسريع وتسهيل عملية البحث على المستخدم للتأكد من الوصول الى البيانات الصحيحه، ومن المعروف ان البحث المتقدم يوفر امكانية البحث في حقول افتراضية مثل: المنشأ، تاريخ الانشاء، الكاتب الخ ...، الان سوف نستعرض كيفية اضافة حقل جديد الى القائمة المنسدلة في خصائص البحث المتقدم او حتى تغيير جميع الحقول الافتراضية وإضافة حقول مخصصة بالكامل ليصبح البحث متخصص بنطاق معين.
الان لنفرض ان لدينا نوع محتوى Content Type وبه مجموعة من الحقول، ونوع المحتوى هذا مستخدم في أكثر من مكتبة أو قائمة في الموقع. ويوجد حقل معين ضمن نوع المحتوى نريد ان نضيفه الى البحث المتقدم ليتمكن المستخدم من البحث فيه، في هذه الحالة سيتم البحث من خلال هذا الحقل في جميع المكتبات والقوائم التي تحتوي على هذا الحقل. والحقل المراد البحث فيه هو رقم المنتج – ProductID. كما ورد في الجزء الثاني من هذه السلسلة.

قبل البدء بالشرح الفني يجب التأكد من إعدادات البحث العامة ونطاق البحث عن طريق Central Administrationوالتي تم شرحها بالجزء الثاني من سلسلة مقالات البحث، ويفترض أيضا أن يكون مركز البحث الأساسي Basic Search Center موجود وذلك للوصول إلى البحث المتقدم، ويمكن تطبيق هذه المقالة على الويب بارت الخاص بالبحث والتي يتم انشائهم مسبقا في صفحة داخل موقع معين ليتم البحث في داخل موقع معين لا على مسوى مجموعة المواقع.

§ ألان ننتقل إلى Central Administration/ Application Management/ Search Service Application

§ نختار Metadata Properties من يسار الشاشة التالية


§ ثم نضغط على New Managed Property

§ من هنا نضيف اسم الخاصية التي تحتوي على الحقول المراد ربطها ليتم اظهارها من خلال فلترة البحث المتقدم.
§ عند الضغط على Add Mapping ننتقل إلى صفحة يتم فيها استعراض جميع الحقول الموجودة بمواقع الشيربوينت ويتم اختيار الحقول المراد ربطها مع الخاصية ProductID

ملاحظة: شرط لظهور الحقول المراد ربطها في هذه الشاشة ان تكون حقول قابلة للبحث Searchable Columnsفي الشيربوينت من خلال Site Actions/ Site Settings/ Site Administration/ Searchable Columns


وشرط اخر لظهور الحقول هو ان تحتوي على بيانات تم اضافتها من قبل المستخدم وان يكون قد تم تنفيذ Full Crawling Search التي تم الحديث عنها بالجزء الثاني.
§ ألان تم إضافة الخاصية وألان علينا الذهاب إلى ويب بارت البحث المتقدمAdvanced Search Web Part ثم نضغط على تحرير

§ ثم نختار الخصائص ليتم فتح ملف XML

§ ألان من خلال ملف XMLنقوم بتحرير الخصائص الداخلية ليتم إضافة الخاصية ProductID. في قسم Property Definitions نقوم بإضافة سطر جديد وتعريف يحتوي على اسم الخاصية ونوعها واسم العرض الذي سيتم عرضه في القائمة المنسدلة.
§ وأخيرا بعد حفظ ملف XML نعود إلى شاشة البحث المتقدم لنلاحظ ظهور حقل رقم المنتج في القائمة المنسدلة ليتم البحث فيه بشكل مباشر


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

وللبدء بتخصيص نتائج البحث بعد ما تم إضافة حقل "رقم المنتج" في قائمة البحث المتقدم، يجب عمل التالي:

1. يجب أن يظهر هذا الحقل في نتائج البحث بهذا الشكل (رقم المنتج: xxxx)

2. لا يظهر هذا الحقل إلا إذا احتوى على قيمة أي لا يتم إرجاع هذا الحقل في نتائج البحث الا اذا كان يحتوي على قيم.

قبل البدء أود التنويه أننا سوف نستخدم لغةXSL - Extensible Stylesheet Language للتعديل على نتائج البحث وعن طريق هذه اللغة نستطيع عرض البيانات المقروءة من ملف XML ليتم عرضها بالشكل الذي نرغب به. وعن طريق هذه اللغة يمكن استخدام For Loops, Switch, IF Clausesوالعديد من جمل المنطق.اي باختصار هي لغة للتحويل من صيغة XML الى HTML او DHML.
الان نبدأ بتنفيذ هذا السيناريو البسيط
§ نقوم بالبحث عن اي عبارة ليتم الانتقال الى صفحة نتائج البحث ومن ثم نقوم بتحرير هذه الصفحة

§ بعد تحرير الصفحة نلاحظ ظهور ويب بارت "نتائج البحث الاساسية" ايضا نقوم بتحرير هذا الجزء

§ نلاحظ ظهور قائمة على الجهة اليسرى فيها جميع اعدادات الويب بارت وما يهمنا الان هو:


- النطاق: قمنا بإنشاء وتعريف نطاق البحث بالجزء الثاني من سلسة البحث، في هذا الجزء فقط نضع اسم نطاق البحث الذي قمنا بانشائه ليتم تفعيله على هذا الويب بارت.

- الخصائص المجلوبة "J": هنا نقوم بإضافة الحقول التي نريد اظهارها في نتائج البحث ويجب ألا ننسى أن الحقول يجب ان تكون من ضمن الحقول التي تم ربطها من خلال (Mapping) التي تم ذكرها سابقا بالقسم الاول من هذا الجزء. وألان نقوم بإضافة حقل ProductID

- محرر XSL: ألان نقوم بتحرير الملف ويفضل نقل الكود إلى محرر XSL، وعند فتح الملف نلاحظ انه ملف نصي كبير نسبيا وليس من السهل فهمه لمن ليس لديهم معرفة بلغة XSL ولكن ما يهمنا منه هو عبارات معينة في مواقع اظهار النتائج. بالبداية نقوم بتعريف Template واضافة الحقول بداخله


بعد ذلك نقوم باضافة سطر كود يتم استدعائه من السطر السابق وهذا الكود خاص باضافة اسم العرض "رقم المنتج" واضافة الشرط الذي يحدد هل قيمة هذا الحقل فارغة او لا وبناءا عليه يرجع قيمة مع اسم العرض او لايرجع شيئا.


الان نقوم بتخزين هذا الملف ومن ثم نقوم بتجربة البحث لنتاكد من ظهور حقل "رقم المنتج" في نتائج البحث التي تحتوي على قيمة في داخل هذا الحقل.


واخيرا كما نلاحظ من خلال صفحة نتائج البحث السابقة أن ليس جميع النتائج تحتوي على "رقم المنتج" انما فقط تم عرض"رقم المنتج" الذي يحتوي على قيم بداخلة.
ملاحظة: كما ذكرنا سابقا يمكن تغيير شكل البحث بشكل كلي وإضافة جداول كما سنرى من خلال هذا الرابط https://sharepoint2010search.codeplex.com والذي يحتوي على كود جاهز لتخصيص البحث بشكل رائع، ما عليك عزيزي القارئ إلا إضافة الحقول التي تريد إظهارها بداخل هذا الكود ليظهر كما بالصورة التالي


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

كاتب المقال

محمد نزال

هناك 3 تعليقات:

اخبار فنية يقول...

موضوع رائع جدااا والمدونة رائعة

Unknown يقول...

جزاك الله خير

أريد أن اغير الشيربونت عربي

هل في كونفقرايشن معين ام ماذا

أرجو المساعدة

المهندس سامر نزال يقول...

اخي العزيز ...

اولا لازم تنزل حزمة خاصة باللغة العربية بعديها راح تتمكن من تحويل اللغة الى العربية,

اذا كان الاصدار اللي شغال عليه هو الشيربيونت 2010 سيرفر بإمكانك الاستفادة من هذه الصفحة :

http://www.microsoft.com/downloads/details.aspx?familyid=046f16a9-4bce-4149-8679-223755560d54&displaylang=ar