البحث النصي المحليبحث في مجموعات محلية بوظائف خلفية
البحث غير المتزامن في الملفات المحلية وعرض التقدم وتصفح النتائج وتنزيلها.

المشكلة وسير العمل
ينشئ المستخدم بحثاً بعد الدخول ← يمسح العامل المجموعة الاصطناعية ← تُحدَّث الوظيفة والنتائج ← يتصفح المالك أو ينزل النتائج ← تراجع الإدارة الاستخدام.
الوظائف الرئيسية
- مسح نصوص عبر mmap وتنفيذ Python بديل
- تسريع Cython اختياري
- تقدم الوظائف وكتابة دفعات النتائج إلى ملفات
- صفحات نتائج وتنزيل وفحص ملكية
- إدارة مستخدمين وإحصاءات استخدام
- إدخال Telegram اختياري معطل افتراضياً
البنية والقرارات
- تُضبط مسارات المجموعة والقاعدة والنتائج من وحدة واحدة بدلاً من مجلد Downloads خاص بجهاز. تستخدم المصادقة والواجهة القاعدة نفسها.
- يتجنب mmap تحميل الملف كله كنص Python. خفض حالة حروف البايتات ليس معالجة Unicode شاملة.
- يستخدم Windows مسار الخيوط وتبقى شيفرة تعدد العمليات للمنصات الأخرى. تُوصف النتائج حسب النظام المقاس.
- فُصلت حزم Telegram والتسريع عن تثبيت Flask الأساسي لتفعيلها بقصد.
- يحفظ متغير بيئة مفتاح الجلسة؛ توليد مفتاح جديد عند التشغيل يبطل الجلسات السابقة.
من الشيفرة
إبقاء بحث المتن الطويل خارج طلب الويب
طورت تطبيق البحث المحلي باستخدام Flask ووظائف الخلفية ومسح الملفات بتقنية mmap.
يقدم Flask واجهة المستخدم والإدارة بينما تمسح وظائف خلفية ملفات mmap. تحفظ SQLite بيانات الوظيفة وتحتفظ ملفات نتائج مجمعة بالمطابقات، وتستعلم الواجهة عن التقدم قبل عرض الصفحات أو التنزيل. تُفحص ملكية النتائج عند حدود التطبيق.
يعتمد سلوك العمال على المنصة. يستخدم مسار Windows الموثق الخيوط ويشكل matcher Cython الاختياري مسار بناء مستقلاً. يتحكم مصدر إعداد واحد الآن في مسارات المتن والقاعدة والنتائج والجلسات، فلا يتعارض إعداد المتن مع قيمة ثابتة بمحرك البحث.
مشاركة حد النتائج بين العمال
قد يؤدي منح كل عامل ملفات حداً مستقلاً إلى نتائج أكثر مما طلب المستخدم. يستخدم الإصدار ميزانية نتائج مشتركة ويفحص الأسطر الطويلة والبايتات المختلطة وتعدد الملفات. تغطي ستة اختبارات هذه الحالات وحدود المستخدمين؛ تبقى الوظائف المنقطعة وتطابق التسريع للتحقق اللاحق.
يستخدم القياس 800 ألف سطر مولد ويوثق الحجم والمطابقات وعتاد Windows وإصدار Python وثلاثة أوقات فعلية. لم يُفرغ مخبأ النظام ولم يُفعل Cython. تجعل هذه التفاصيل القياس قابلاً للتكرار دون ادعاء تسريع غير مقاس أو معالجة إنتاجية بحجم تيرابايت.
حالة المشروع
تطبيق معالجة مجموعات نصوص محلية وإدارتها. يستخدم العرض نصوصاً مولدة فقط.
استخدم Python 3.12 للفحوص المسجلة. صدّر قيم .env.example إلى العملية؛ يحل config.py المسارات النسبية من جذر التطبيق. اضبط SECRET_KEY ثابتاً للجلسات وENABLE_TELEGRAM=0. يطلب bootstrap_demo.py كلمة مدير جديدة بطول 12 ويكتب النص المولد إذا لم يكن موجوداً فقط. Cython اختياري يحتاج مترجماً؛ Python هو المسار الافتراضي المفحوص.
فحوص التطوير وحدود التشغيل
نجحت اختبارات Python الستة: الأسطر الطويلة ومطابقة AND وعدم وجود نتائج والبايتات المختلطة وحد نتائج مشترك بين الملفات وملكية الوظيفة ورفض البحث دون دخول وفحص تراجع على ألف سطر. وجد قياس Windows دون Cython 800 نتيجة في 800 ألف سطر مولد بحجم 36,353,960 بايت؛ الأوقات 10.2452 و10.9746 و10.5983 ثانية دون تفريغ مخبأ النظام.
لم يُفحص تطابق Cython وعمال Linux والتعافي من وظيفة منقطعة. القياس المرفق خاص بـPython على جهاز Windows الموثق وليس مقارنة تسريع. إدخال Telegram الاختياري معطل في العرض.
التفاصيل التقنية ↗