تتيح هذه المكتبة فهرس بحث كامل الميزات في متصفحك، ويتم استخدامها في Runbox 7 للبحث في رسائل البريد الإلكتروني دون التفاعل مع الخادم.
وهو يعتمد على Xapian وهي مكتبة محركات بحث مفتوحة المصدر مكتوبة بلغة C. ومن خلال تجميع Xapian باستخدام مترجم Emscripten، أصبحنا قادرين على إنشاء هذه المكتبة لـ WebAssembly والتي تعمل في المتصفحات الحديثة.
من خلال استهداف WebAssembly، يمكننا أيضًا استخدام نفس الكود على الخادم مع العقدة. لا نحتاج إلى إنشاء إصدارات منفصلة لأنظمة تشغيل مختلفة. وأيضًا نظرًا لأنه يعمل داخل صندوق حماية جافا سكريبت، يمكننا الاستفادة من ميزات الأمان التي تأتي معه. نعتقد أن هذا أكثر أمانًا وأكثر قابلية للحمل من الإصدارات الأصلية، دون فقدان الكثير عندما يتعلق الأمر بالأداء. بدلاً من ذلك، رأينا مكاسب في إنتاجية التطوير وحتى الأداء من خلال هذا التكامل المحكم مع وقت تشغيل Javascript الذي يأتي مع WebAssembly، مقارنة باستخدام روابط لغة البرمجة النصية التقليدية لمكتبات C.
إن وجود فهرس البحث في المتصفح لن يعمل بالطبع مع محرك بحث للويب بأكمله، ولكن بالنسبة لحساب البريد الإلكتروني هناك كمية محدودة من البيانات حيث يمكن أن يتناسب فهرس البحث مع محرك التخزين المحلي للمتصفح مثل IndexedDB وحتى في الذاكرة عند الاستخدام.
هناك العديد من الفوائد لوجود فهرس بحث في المتصفح بدلاً من وجوده على الخادم. بادئ ذي بدء، يتعلق الأمر بزيادة السرعة نظرًا لعدم توفر رحلة ذهاب وإياب للاستعلام والنتائج إلى الخادم. يمكنك إرجاع نتائج البحث الكاملة على الفور أثناء الكتابة، ويمكنك تقديم المزيد من الميزات عندما يتعلق الأمر بفرز وحساب عدد الزيارات. بالنسبة للمستخدم، يعني هذا أنه يمكنك أن تكون أكثر كفاءة في تعديل استعلامك نظرًا لأنك تحصل على مثل هذه النتائج الفورية. فائدة أخرى هي أنه لن يقوم أي خادم بمراقبة ما تبحث عنه، وهو أمر جيد للخصوصية. يمكنك أيضًا البحث في المحتوى الخاص بك عندما تكون غير متصل بالإنترنت (بدون اتصال بالإنترنت). إذا كان المستخدم يتمتع بمهارات الترميز، فإن الوصول الكامل إلى فهرس البحث والمكتبات للتفاعل معه يفتح إمكانيات المعالجة المخصصة للفهرس. في سيناريو البريد الإلكتروني، يمكن أن يشمل كل شيء بدءًا من عمليات البحث الذكية وحتى المراقبة والتنبيهات.
لا تزال هناك حالات لا تريد فيها تنزيل فهرس البحث، وتريد استخدام الخادم للبحث. قد يكون أحد السيناريوهات عند استخدام جهاز ليس خاصًا بك. يتيح استهداف WebAssembly إمكانية إعادة استخدام نفس الكود الموجود على الخادم لتوفير نفس واجهات برمجة التطبيقات (API) الموجودة في المتصفح.
تستفيد تطبيقات الويب الحديثة بشكل متزايد من التخزين المحلي للمتصفح لذاكرة التخزين المؤقت وإعدادات التخزين والمحتوى والمزيد. ويمنحنا هذا أداءً أفضل وإمكانيات أفضل في وضع عدم الاتصال، ولكنه يتطلب أيضًا مزيدًا من الوعي بالمتصفح والجهاز الذي نستخدمه. عند عدم استخدام جهازك الخاص، يجب عليك استخدام التصفح الخاص حتى لا يتم تخزين أي شيء على هذا الجهاز. بالنسبة لأجهزتك الخاصة أيضًا، يجب أن تفكر في استخدام نظام تشغيل يوفر أنظمة ملفات مشفرة.
يعتمد هذا المشروع على https://github.com/xapian/xapian وأنك قمت بإنشائه باستخدام Emscripten كما هو مكتوب هنا:
https://github.com/xapian/xapian/blob/master/xapian-core/emscripten/README.md
من أجل إنشاء ثنائيات تجميع الويب، سيتعين عليك تعيين متغير بيئة XAPIAN
إلى موقع المجلد xapian_core
الخاص ببناء Xapian emscripten الخاص بك.
يمكنك بعد ذلك بنائه باستخدام XAPIAN=xapian_core_location npm run build
يمكنك أيضًا إلقاء نظرة على ملف .travis.yml للحصول على إجراء البناء والاختبار الكامل (الذي يتم تشغيله في كل دفعة).
npm run test