إزالة طبقة الذكاء الاصطناعي + إصلاح البحث + اقتراح تلقائي
يوليو 2026
حذف jowa-ai-search بالكامل — كانت طبقة إعادة الترتيب زائدة عن الحاجة ومكررة لعمل BM25، حُذفت من الكود والواجهة ومن مراقبة ضغط السيرفر.
تبسيط خوارزمية البحث — إزالة طبقات المكافآت والتعزيز اللغوي الزائدة التي كانت تُشوّش الترتيب، مع الإبقاء على BM25 وPageRank فقط.
إصلاح الفهرس المعكوس — أداة rebuild_index.py جديدة لإعادة بناء الفهرس من الوثائق المخزنة سابقاً وإصلاح تطابق الرموز مع المحلل الحالي.
سكربت توافق قاعدة البيانات — fix_db.py لمواءمة قواعد البيانات القديمة مع بنية الكود الحالي.
اقتراح "هل تقصد" — عند ضعف نتائج البحث يقترح المحرك أقرب اسم دومين مطابق تلقائياً.
v2.0
إعادة كتابة كاملة للمحرك + جولة ذكاء اصطناعي جديدة (jowa-ai-search)
يوليو 2026
محرك الزحف غير متزامن بالكامل عبر aiohttp/asyncio بدل الـ threads التقليدية، مع cache داخلي للدومينات المزارة والمفهرسة لتقليل ضغط قاعدة البيانات.
BM25 حقيقي (k1=1.5, b=0.75) مع تطبيع طول الوثيقة بدل TF-IDF البسيط، ودعم أعمق للكشف بين العربية والإنجليزية مع boost لغوي عند تطابق لغة السؤال مع لغة الوثيقة.
jowa-ai-search — طبقة إعادة ترتيب بالذكاء الاصطناعي تعتمد على MiniLM للتمثيل الرقمي للنصوص و DQN يتعلم من تقييمات المستخدم (👍/👎) مباشرة أثناء التشغيل دون الحاجة لسكربت تدريب منفصل.
مراقبة ضغط السيرفر — تعطيل تلقائي لميزة الذكاء الاصطناعي عند ارتفاع استهلاك المعالج أو الذاكرة لحماية استقرار الخدمة.
إصلاحات استقرار جوهرية — حل مشكلة تضارب SQLite بين الخيوط المتعددة، ونقل حساب PageRank إلى اتصال مشترك، وتصحيح دقة التغذية الراجعة للذكاء الاصطناعي.
robots.txt و sitemap.xml ديناميكيان يعتمدان على رأس الطلب لتحديد الدومين الفعلي مع رجوع افتراضي لدومين Tailscale.
واجهة محدثة — صفحة سجل تصفح محلي، تبديل لغة عربي/إنجليزي، مؤشرات تحميل في كل الصفحات، وتوحيد كل الأنماط داخل ملف واحد.
v1.9أحدث
40 مفهرس + تقييم المواقع + سجل تصفح محلي
يونيو 2026
40 مفهرساً (بدل 20) وإعادة تشغيل الفهرسة التلقائية تلقائياً عند بدء السيرفر.
PageRank أسرع — إعادة كتابة الخوارزمية من O(n×edges) إلى O(edges) عبر reverse-link map، مع فاصل إعادة الحساب يتوسّع تلقائياً مع نمو الفهرس، وقراءة الإعدادات من config.json.
إدارة موارد أعمق — Semaphore عام يحدّ عمليات الجلب المتزامنة عبر كل المفهرسين معاً حسب worker_threads، وحذف خيار "فترة الاستراحة" لاستجابة أسرع عند نفاد الـ seeds.
v1.8
الفهرسة المحلية
ابريل 2026
الفهرسة أصبحت لا تتوسع تلقائياً — يتم إنتاج الفهرس محلياً عبر indexer_local.py بناءً على الفهرسة التي تفهرس في مكان اخر
v1.7
نظام الـ 20 مفهرس + الأمان الكامل
يونيو 2026
20 مفهرس مستقل يتحكم بهم ملف crawler.json — كل مفهرس له وضع (page أو domain) وعدد threads وأولوية مستقلة.
Seeds ديناميكية — قاعدة بيانات wex_seeds.db تبدأ بـ 183 seed مصنّفة في 17 فئة.
حماية SSRF في addweb — كل URL يُضاف يُفحص ضد Private IPs و AWS metadata.
تسريع الفهرسة — Batch size 80 وثيقة، PageRank في thread منفصل، HTTP Session Pool.
v1.6سابق
اضافة رقم اصدار
مايو 2026
index.html - search.html اضافة رقم الاصدار
v1.5سابق
تحسينات الأمان وإعادة هيكلة الـ Crawler
مايو 2026
secure_store.py — تشفير addweb.json بـ XSalsa20-Poly1305 + Argon2id لاشتقاق المفتاح (64MB memory cost). أي تعديل يدوي على الملف يُكتشف فوراً ويُغلق الوصول.
config_loader.py مع Hot-reload — يقرأ config.json ويُعيد تحميله تلقائياً عند تغييره دون إعادة تشغيل.
CSP headers + HSTS + X-Frame-Options — حماية كاملة على مستوى HTTP headers.
التحديثات السابقة
v1.4
TF-IDF + PageRank + Batch Indexer
ابريل 2026
indexer.py — نظام TF-IDF مع PageRank يعمل كل 30 وثيقة.
كتابة batch في SQLite (30 وثيقة/transaction) بدل كتابة فردية — أسرع بـ 10×.
دعم العربية في الـ tokenizer — [\u0600-\u06FF]+ مع الإنجليزية.
WAL mode + PRAGMA cache_size=32MB لتحسين الأداء تحت التوازي.
v1.3
Domain-Only Mode + Resource Monitor
ابريل 2026
Domain-only mode — فهرسة الصفحة الرئيسية لكل دومين فقط بدل زحف كامل، مناسب للسيرفرات المحدودة.
Resource monitor يتوقف مؤقتاً عند تجاوز حد RAM أو CPU المضبوط في config.
ThreadPoolExecutor مع batch processing — معالجة متوازية للدومينات.
v1.2
واجهة WEX + Seeds الأولية
مارس 2026
تصميم الواجهة الأساسية — شعار WEX، مربع البحث، بطاقات الاقتراحات.
قائمة Seeds الأولية — أكثر من 100 موقع عربي وإنجليزي.