Full Text Search (FTS) in Databases (Arabic - عربي) with Amr Elhelw - Tech Vault
About this video
### ملخص شامل عن البحث النصي (Full Text Search) #### **1. مقدمة إلى البحث النصي:** البحث النصي هو تقنية تُستخدم للبحث في كميات كبيرة من البيانات النصية باستخدام كلمات أو تعبيرات معينة. يختلف عن البحث التقليدي في قواعد البيانات الذي يعتمد على المطابقة الدقيقة (Exact Match)، حيث يتيح البحث النصي إمكانية المطابقة الجزئية (Partial Match) وترتيب النتائج بناءً على مدى ارتباطها بالاستعلام. هذه التقنية تُستخدم بشكل واسع في محركات البحث مثل جوجل وفي أنظمة إدارة قواعد البيانات الحديثة. --- #### **2. الفرق بين البحث التقليدي والبحث النصي:** - **البحث التقليدي:** - يعتمد على المطابقة الدقيقة للقيم في الحقول. - يستخدم عادة مع استعلامات SQL التقليدية التي تعتمد على العامل `LIKE`، لكنه يواجه تحديات مثل الحساسية لحالة الأحرف وعدم القدرة على التعامل مع الاشتقاقات اللغوية (مثل "bake" و "baking"). - **البحث النصي:** - يتيح البحث الجزئي والمرونة في التعامل مع الاشتقاقات اللغوية والمرادفات. - يقوم بتحليل النصوص وتوليد فهارس (Indexes) لتسريع عمليات البحث. - يقدم نتائج مرتبة بناءً على الصلة، مما يجعله أكثر فعالية عند التعامل مع بيانات نصية ضخمة. --- #### **3. كيفية عمل البحث النصي:** عملية البحث النصي تتضمن عدة خطوات أساسية: 1. **تحليل المستندات (Documents Analysis):** يتم تقسيم النصوص إلى وحدات صغيرة تُسمى "توكنز" (Tokens)، وهي عبارة عن كلمات أو أجزاء من النصوص. 2. **إزالة الكلمات الشائعة (Stop Words Removal):** يتم حذف الكلمات غير المهمة مثل "و"، "في"، "على"، لأنها لا تضيف قيمة للبحث. 3. **إرجاع الكلمات إلى أصولها (Stemming):** تحويل الكلمات إلى جذورها الأساسية، مثل تحويل "كتب" إلى "كتب" لتسهيل البحث. 4. **إنشاء الفهرس (Indexing):** بعد تحليل النصوص، يتم إنشاء فهرس عكسي (Inverted Index) يربط بين الكلمات والمستندات التي تحتوي عليها. هذا الفهرس يسرع عملية البحث بشكل كبير. --- #### **4. أدوات البحث النصي في قواعد البيانات:** - **PostgreSQL:** يوفر PostgreSQL ميزات متقدمة للبحث النصي باستخدام نوعي البيانات `tsvector` و `tsquery`: - **tsvector:** يحول النصوص إلى شكل منظم عبر تقسيمها إلى توكنز، إزالة الكلمات الشائعة، وإرجاع الكلمات إلى أصولها. - **tsquery:** يمثل الاستعلامات بطريقة منظمة، مما يسمح بالبحث عن كلمات أو تعبيرات معينة. - يتم استخدام العامل `@@` للتحقق مما إذا كانت النتائج في `tsvector` تتطابق مع الاستعلام في `tsquery`. - **تحسين الأداء:** - يمكن تحسين الأداء عبر تخزين النتائج المحولة (`tsvector`) في عمود جديد (مثل `search_vector`) واستخدامه مباشرة أثناء البحث. - إنشاء فهرس (GIN Index) على العمود `search_vector` يقلل بشكل كبير من وقت التنفيذ (من 16 ميلي ثانية إلى 56 ميكروثانية). - **MySQL و MongoDB:** تقدم هذه الأنظمة أيضًا دعمًا للبحث النصي، لكنها قد تكون أقل مرونة أو أداءً عند التعامل مع استعلامات معقدة أو مجموعات بيانات ضخمة. --- #### **5. الحلول المتقدمة للبحث النصي:** - **Apache Lucene و Elasticsearch:** لأغراض أكثر تعقيدًا، يمكن استخدام أدوات خارجية مثل Apache Lucene أو Elasticsearch. هذه الأدوات توفر ميزات متقدمة مثل البحث القابل
Course: Advanced Database Topics (Arabic - عربي)
**وصف الدورة: مواضيع متقدمة في قواعد البيانات (عربي)** تستعرض هذه الدورة مجموعة من المواضيع المتقدمة المتعلقة بقواعد البيانات الموزعة، مع التركيز على مفاهيم وتقنيات الـ "Distributed Databases" أو ما يُعرف بقواعد البيانات الموزعة. تهدف الدورة إلى تقديم فهم شامل حول سبب وكيفية استخدام هذا النوع من قواعد البيانات، بالإضافة إلى تحديات التعامل معها. سيتم شرح الفرق بين قواعد البيانات المركزية (Single-node) والقواعد الموزعة (Distributed)، مع أمثلة عملية مثل Google Spanner و Amazon DynamoDB. كما ستتناول الدورة بالتفصيل الأسباب التي تجعل التطبيقات الكبيرة تحتاج إلى نقل بياناتها من قواعد بيانات مركزية إلى أخرى موزعة لتحسين الأداء وتلبية احتياجات النمو. من بين أهم المواضيع التي ستتم مناقشتها هي الصعوبات المرتبطة بقواعد البيانات التقليدية عند التعامل مع كميات ضخمة من البيانات أو عند الحاجة إلى توسيع نطاق النظام (Scaling). سيتم شرح كيفية التغلب على هذه التحديات باستخدام تقنيات مثل Vertical Scaling و Horizontal Scaling. كذلك، سيتم التركيز على مشاكل مثل انقطاع الخدمة بسبب أعطال السيرفرات وكيف يمكن لقواعد البيانات الموزعة أن تقدم حلولاً لهذه المشاكل عبر تعدد العقد (Nodes) والحفاظ على استمرارية العمل حتى في حالة حدوث خلل في إحدى العقد. ستغطي الدورة أيضًا مفاهيم أساسية مثل Sharding و Replication وكيفية عملها داخل نظام قاعدة البيانات الموزعة. سيتم توضيح كيفية تقسيم البيانات بين العقد المختلفة (Sharding) لتوزيع الحمل وتقليل الضغط على السيرفر الواحد، بالإضافة إلى كيفية نسخ البيانات عبر العقد المختلفة (Replication) لضمان عدم فقدان البيانات واستمرارية الوصول إليها. كما سيتم تعريف الطلاب بمكونات البنية الأساسية لنظام Distributed Database مثل Leader Node و Worker Nodes، ودور كل منها في إدارة الطلبات وتنفيذ العمليات. بنهاية الدورة، سيكون لدى الطلاب فهم عميق لكيفية تصميم وإدارة قواعد بيانات موزعة بشكل فعال لتلبية احتياجات التطبيقات الحديثة.
View Full Course