لا تبحث عن الكلمة، ابحث عن الفكرة.
هذا ما تحاول ميزة البحث الموضوعي أن تقدّمه. تكتب كلمة واحدة مثل rain، فيأتيك القرآن كلّه عن
المطر والريح والسحاب، لا آية واحدة تكرّر اللفظ. وُلدت الفكرة من نقاش داخل مجتمع إتقان، وأخذت
شكلها الأول في مساهمة مباشرة في المستودع، ونُشرت في الإصدار 0.4.0 عبر طلب الدمج #103 من
المساهم @Eslam Wael. هذا سرد لما بُني، وما بقي ناقصًا، وما الخطوة التالية.
1. المشكلة التي يحلّها
لو بحثت عن "الصبر" في محرّك بحث عادي، فستحصل على الآيات التي وردت فيها كلمة "صبر" فقط. لكن
موضوع الصبر أوسع من لفظ واحد: فيه البلاء، والشدّة، والفرج بعد الضيق. من يكتب "الصبر" إنما يريد
المعنى، لا تكرار الحرف.
هنا يأتي دور البحث الموضوعي: تكتب مفهومًا واحدًا، فيحوّله المحرّك إلى مجموعة كلمات عربية تنتمي
إلى الموضوع نفسه، ثم يبحث بها كلها دفعة واحدة.
2. الفكرة المحورية
الخريطة بسيطة: لكل موضوع قائمة كلمات عربية، ومجموعة مفاتيح إنجليزية تقود إليها. فمفاتيح
weather وrain وclimate وstorm كلها تنتهي إلى القائمة نفسها:
مطر · ريح · رياح · عاصفة · سحاب · برق · رعد · برد · غيث · صيب · بحر · موج · طوفان · قطر · ودق
أيًّا كتبت منها، وصلت إلى الموضوع كاملًا. جرّبتُ ذلك على بيانات المحرّك كاملة (قرابة 6.2 ألف
آية)، وكانت rain وclimate وweather تعطي النتيجة ذاتها: 127 آية.
3. لماذا الجذر لا النص؟
سؤال يستحق التوقف. لو طابقنا الكلمات كنصّ خام، لوجدنا "ماء" داخل "سماء"، و"اب" داخل "كتاب"،
فيتلوّث الموضوع بآيات لا علاقة لها به. لذلك يعتمد المحرّك على جذر الكلمة ولمّتها وشكلها مع
اللواصق. المطابقة تصبح أدق، وتبقى مع ذلك قادرة على التقاط "وأمطرنا" عند البحث عن "مطر".
وهذا الاختيار نفسه هو ما جعل البحث الموضوعي يضيف طبقة جديدة إلى المحرّك، مع فهرس موضوعي يُبنى
مسبقًا. يمكن لتطبيقك أن يبني هذا الفهرس مرة واحدة، ثم يتنقّل به داخل أي موضوع دون تشغيل بحث
من جديد.
4. ماذا يعطي عمليًا
أرقام من التجربة على البيانات الكاملة:
| الموضوع | عدد الآيات |
المطر والطقس (rain) | 127 |
العبادة (worship) | 1346 |
الحياة الأبدية (eternal life) | 675 |
يوم الحساب (judgment day) | 1684 |
المعرفة (knowledge) | 1907 |
لاحظ أن بعض الموضوعات واسعة، مثل المعرفة (1907 آية). هذا طبيعي: الموضوع الواحد يجمع ألفاظًا
كثيرة، وبعضها شائع في القرآن.
5. ما لم يكتمل بعد
ثلاث نقاط بصراحة:
- الكلمة العربية لا تفتح الموضوع كاملًا — لأن مفاتيح الخريطة إنجليزية، فمن يكتب "غيث" يحصل
على 4 آيات فقط، بينما "rain" يعطي 127. الكلمة العربية تُبحث بجذرها وحدها، لا ضمن مجموعتها.
- لا تصحيح للأخطاء الكتابية في الإنجليزية — "rrain" لا تعطي شيئًا، لأن المطابقة دقيقة.
- البيانات بذرة أولية — عشرون موضوعًا فقط. البنية سليمة وتؤدي وظيفتها، لكن التغطية تحتاج
توسيعًا.
6. الخطوة القادمة
- الكلمات العربية كمفاتيح — نضيف كل كلمة عربية كمفتاح يقود إلى موضوعها، فيصبح "غيث" مثل
"rain" تمامًا. التغيير صغير، ولا يمسّ منطق المطابقة القائم.
- تصحيح تقريبي للإنجليزية — بحيث يجد "rrain" طريقه إلى "rain" بدل أن يعود بصفر.
- ثم مرحلتان منفصلتان — دعم سطر الأوامر، وإثراء البيانات دون تغيير بنيتها.
7. لمن هذا؟
- مطوّرو التطبيقات القرآنية الذين يريدون بحثًا بالفكرة لا باللفظ.
- من يبني واجهات بحث أو مساعدات محادثة فوق النص القرآني.
- الباحثون الذين يتنقّلون بين موضوعات قرآنية متقاربة.
8. الخلاصة
وضعت الطبقة الأولى أساسًا صحيحًا: خريطة مفهوم إلى كلمات، ومطابقة بالجذر لا بالنص، وفهرس موضوعي
يمكن بناؤه مسبقًا. والخطوة القادمة لا تعيد البناء، بل تجعل الكلمة العربية تفتح موضوعها كما يفتحه
نظيرها الإنجليزي.
المصادر والروابط
المستودع: https://github.com/adelpro/quran-search-engine
طلب الدمج #103: https://github.com/adelpro/quran-search-engine/pull/103
دليل البحث: docs/guides/subjects-and-multiword.md
البيانات: src/data/subjects.json