منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : درس في كيفية التعامل مع خاصية في السيكوال سيرفر Full Text Index
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته,
تحية طيبة
وددت اليوم ان اقدم لرواد هذا المنتدى الزاخر بالمعرفة معلومة لطالما سألوني الكثير حولها
وهي كيفية التعامل مع خاصية Full Text Index
بدون ان اخوض بالمقدمات سوف ادخل بشكل مباشر لصلب الموضوع

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

رمز برمجي:
الرمز:

Create Table G1lgamesh_Search
(
Id Int Primary Key Identity(1,1),
Title Varchar(500),
[Desc]Varchar(max)

)
مع الملاحظة البسيطة والتي يجب ان تركز عليها
وهي ان خاصية full text index لا تعمل سوى مع الحقول التي تكون primary key او unique key


وبعد اكمالك انشاء الجدول الرجاء قم بأدخال بعض البيانات داخل هذا الجدول
الخطوة الثانية
في هذه الخطوة سوف نقوم full text index على قاعدة البيانات الخاصة بنا هذا وبالاضافة الى الجدول الذي انشئناه من اجل ان نوفر خاصية البحث داخل هذا الجدول
حيث يتوجب علينا انشاء category وذلك عن طريق الكود البرمجي التالي

رمز برمجي:
الرمز:
CREATE FULLTEXT CATALOG ForTableSearch

حيث ان ForTableSearch هو اسم لهذا الصنف
الخطوة الثالثة

في هذه الخطوة سوف نقوم بأنشاء full text index في جدولنا الذي قمنا بتوليده سابقآ
ولكن نحن بحاجة الى unique key id او primary key id لذى سوف نقوم بايجاد هذا الــ id عن طريق الكود التالي البسيط

رمز برمجي:
الرمز:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS


في الكود البرمجي السابق سوف يظهر لنا جميع اسماء القيود (constraint names) للجداول التي انشأناها داخل قاعدة البيانات الخاصة بنا
قم بأخذ نسخة من اسم القيد الخاص بالجدول G1lgamesh_Search المنشئ مسبقآ بالخطوة رقم واحد

بعد ذلك سوف نقوم بكتابة الكود البرمجي الخاص بأنشاء full text index

رمز برمجي:
الرمز:

CREATE FULLTEXT INDEX ON G1lgamesh_Search

(Title, [Desc] ******** 1033)
KEY INDEX PK__Tbl_Sear__3214EC0700551192
ON ForTableSearch

مع الملاحظة :

نقوم بأستبدال العبارة ("PK__Tbl_Sear__3214EC0700551192")الموجودة بالكود السابق بأسم القيد الذي قمنا بنسخه في الكود البرمجي الذي سبق هذا
**
من الملاحظ اننا في عملية انشاءنا هذه قمنا بتوليد FULLTEXT INDEX على الحقل Title وكما اننا استعملنا اللغة الانكليزية واستدلينا عليها برقم اللغة 1033



الخطوة الرابعة

الان سوف نستطيع ان نستخدم خاصية البحث داخل الجدول المنشئ بأستخدام الفهرس المخصص لذلك

قم بعملية استعلام بسيطة بأستخدام الكود التالي

(
الرمز:
Select * from G1lgamesh_Search Where Contains(Title,'Asp.Net')
(Select * from G1lgamesh_Search Where Freetext([Desc],'Asp.Net')


لي الاستعلامات السابقة تلاحظون بأننا قد قمنا بعملية استعلام مشروطة بأسم الحقل المراد البحث داخله وكذلك مررنا ماذا نريد للبحث,
الاستعلام الاول السابق سوف يقوم بأرجاع الصفوف التي تحتوي على كلمة Asp.Net في حقل الـــ Title
والاستعلام الثاني السابق سوف يقوم بأرجاع الصفوف صفوف ASP.Net الموجودة في العمود DESC


في بعض الاحيان النتائج تكون مخيبة عندما تقوم بأستعلام عن شئ ما وسوف تظهر لك رسالة مشؤومة
مفاد تلك الرسالة fdhost cannot be started هذا يعني بأن خدمة Full Text Index غير مفعلة لديك ولكي تقوم بتفعيلها قم بأتباع المسار التالي

الرمز:
SQL Server Tool->SQL Server Configuration Manage->Service->Full Text Search filter Demon Launcher

وقم بعمل start automatic


انتهى
طب لماذا لم تقم بتوضيح الفائدة منها اولا ^_^
smss الذي يبحث على هذه الخاصية وكيفية استخدامها ^_^ سوف يكون مدرك ما اهميتها ^_^ وما فائدتها