جدول المحتويات
التقنيات والبدائل
يصمم “ثواب” بطريقة modular تسمح باستبدال أجزاء منه عند الحاجة.
هيئة الملفات ونموذج البيانات
حيث أننا نريد أن نترك للمحرر تعريف وسوم جديدة للنص بحسب نوع المحتوي كأن يحدد أن جزء كذا وكذا من النص هو تعريف بالراوي ..إلخ فإن نموذج البيانات يجب أن يكون مرن جدا وغير محدود. كذلك يجب أن يكون سريعا وقابلا للتبادل وأن يسمح بالتحرير التزايدي والجزئي
وقد وقع الاختيار على sqlite3 وتم عمل نموذج البيانات
كان علينا الاختيار بين
- هيئة الملفات الخاصة بقاعدة بيانات مضمنة embedded RDBM مثل sqlite
- طريقة Serialization تتيح تمثيل xml مثل
- طريقة خاصة بنا
للتفصيل انظر هيئة الملفات ونموذج البيانات
محرك البحث
إن أقوى محرك بحث متوفر لدينا هو lucene وله العديد من المزايا الفائقة منها
- الأداء
- سرعة الفهرسة
- متطلبات قليلة من الرام تصل إلى 1 م.ب فقط
- الفهرسة التزايدية أي متابعة الفهرسة من حيث توقفت وفهرست التغيّرات فقط
- صغر حجم الفهرس حيث يصل إلى 20-30% من حجم المحتوى
- الدقة
- النتائج الأفضل والأقرب أولا
- البحث عن حقول بعينها
- الترتيب وفق أي حقل
- يسمح بتزامن البحث والتحديث
وعيوبه أنه يحتاج JRE وإن كان يعمل نظريا دونها عبر GCJ (كما في pylucene) حيث أن كل التنفيذات له بلغات غير جافا مهملة التطوير ولا ترقى لمستواه
من الأمثلة على محاولات تنفيذه بلغات أخرى (بايثون مثلا)
- lupy مشروع متوقف عند الإصدار الأول من lucene
- مشروع بالكاد بدأ و nlupy مبني على أحدث إصدار من Lucene لكنه لا يعمل الآن.
للمزيد انظر
محرك البحث البديل
من الصعب العثور على بديل لمحرك lucene إلا أن أهم البدائل هو xapian المكتوب على سي++ ويمكن ربطه على عدة لغات مثل بايثون (اسم الحزمة في أعجوبة لينكس هو xapian-bindings-python)
أهم مزاياه هي أننا إن استخدمناه لا نعود مرتبطين بلغة جافا.
لكن هذا لا يعني أنه هذا هو السبب الوحيد للتفكير به كبديل انظر صفحة مزاياه للتفصيل.
هناك بديل آخر اسمه Whoosh مكتوب على بايثون pure python
بدائل الواجهة
يؤجل إلى حينه
- تطبيق ويب عبر خادم مضمن Jetty يطلق المتصفح المفضل
- تطبيق ويب عبر WebKit دون خادم
- تطبيق سطح مكتب متكامل عبر Cairo أو أي محرك رسومي آخر