طرق تستخدم لاسترجاع المعلومات ... ولكن من أين تأتي هذه المعلومات؟
الطريقة الأسهل والغير مجدية هي عمل Scan لجميع الDocuments والبحث فيها جميعها في كل مرة تريد البحث عن query ما..
الطرق الأفضل والتي تستخدمها محركات البحث، وهي تخزين هذه المعلومات في data structure معينة .. وعندما تريد البحث عن query او keywords معينة فسوف يتم البحث في تلك الdata structure وسوف تقلص زمن البحث بنسبة كبيرة جداً جداً..
كيف تبنى هذه الData structure؟
أسهل طريقة ممكنة هي عمل مصفوفة من بعدين .. الاعمدة تمثل جميع الTerms (الكلمات) التي توجد في جميع الملفات Documents ، أما الأسطر فهي تمثل الملفات Documents ID.. وسيتم وضع 1 في حال كان الملف يحتوي على الكلمة التي في العمود ، والا سيتم وضع 0 في تلك الخانة.. هذا بالنسبة للConstruction . بالنسبة للبحث في هذه الData Structure (الاسم الصحيح لها هو Document-Term Incident Matrix) فيكون من خلال boolean model وهي تطبيق العلامات المنطقية AND OR NOT في الاستعلام.. هذه الMatrix بالرغم من سهولة تطبيقها الا انها غير مجدية بتاتاً نظراً لوجود عدد ضخم جداً من الخانات سوف تكون فارغه (0) وتدعي هذه المسئلة ب Sparse Matrix.. وسوف تأكل جميع الStorage لديك بلا فائدة تذكر.. لذلك تهمل هذه الdata structure في التطبيق العملي..
الطريقة الأفضل والتي يستخدمها جميع محركات البحث وهي بناء Inverted Index .. وهي عبارة عن عمود يحتوي على جميع الكلمات الموجودة في ملفاتك وكل من هذه الأعمدة يحتوي على مؤشر لLinked List (أو Variable Array) تحتوي على جميع الملفات التي تحتوي على هذه الكلمة.. الصورة التالية توضح ذلك:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]لاحظ أن الكلمة قيصر تكررت في الملفات 1 و 2 و 4 ... و الكلمة برتس تكررت في 1 و2 و 4 و5 والخ..
هذا بالنسبة لبناء الInverted Index .. أما لكي تبحث فيه من خلال الboolean model فمثلا لو أردنا أن نبحث عن الملفات التي تحتوي على الكلمتين قيصر و برتس ، سوف يكون شكل الاستعلام هو:
Brutus AND Caesar
والتانج هي الملفات 1 و 2 و4 ( بعد تطبيق عملية تقاطع Intersection ) بين هذه الLinked Lists.
بالنسبة لل Extended Boolean Model فهي اضافات على الطريقة الأولي والتي تفتصر على ANT NOT OR فقط وتخرج النتيجة فقط اذا كان الملف يطبق الشرط الذي قمت بكتابته في الquery.. الاضافات هي مثلا الكلمة NEAR أو LIKE والخ (تسمى proximity operator ).
أما بالنسبة للVector Space Model فهو تقريباً السائد حالياً حيث يدعم استعلام بدون تحديد جمل معينة Free Form Query اضافة الى ان الناتج يكون أفضل النتيجة best result وليس كما في الboolean/extended models فهي تخرج بدون مراعاة للSocring.