لماذا تستضيف محرك البحث الخاص بك ذاتيًا على VPS
محرك بحث مخصص يستبدل استعلامات LIKE '%...%' البطيئة ببحث فوري متسامح مع الأخطاء المطبعية ومُرتَّب حسب الملاءمة. استضافته ذاتيًا على VPS تجنّبك الفوترة حسب عدد عمليات البحث أو المستندات في حلول SaaS، وتُبقي فهرسك (وبالتالي بيانات عملائك ومكتبتك) على بنيتك التحتية. صُمِّم Meilisearch وTypesense لـ 'البحث أثناء الكتابة' (search-as-you-type): استجابات في بضع ميلي ثانية، وواجهة REST بسيطة، وتسامح مع الأخطاء المطبعية، وأوجه (facets) مُضمَّنة. يتألق Meilisearch بسهولة البدء وجودة الملاءمة الافتراضية؛ ويركّز Typesense على الأداء الخام والتحكّم الدقيق في الترتيب (ranking) والتجميع (clustering) عالي التوافر. يبقي Typesense الفهرس القابل للبحث كاملًا في الذاكرة (RAM)؛ أما Meilisearch فيخزّنه على القرص (LMDB، ملف معيَّن في الذاكرة) ويستخدم الذاكرة مخزنًا مؤقتًا: وفي الحالتين تحدّد الذاكرة حجم الـ VPS مباشرةً.
مزايا محرك بحث مستضاف ذاتيًا
- بحث فوري مع تسامح مع الأخطاء المطبعية، من دون برمجة الخوارزمية
- لا فوترة حسب المستند المفهرس ولا حسب الاستعلام
- الفهرس وبيانات العمل محفوظة على VPS الخاص بك
- أوجه وعوامل تصفية وفرز لبناء واجهات مكتبة غنية
- واجهة REST ومفاتيح محدودة النطاق لاستخدام آمن من جهة الواجهة الأمامية
- مرادفات وقواعد ملاءمة قابلة للتعديل حسب مصطلحات عملك
المتطلبات: الذاكرة (RAM) أولًا
الذاكرة (RAM) هي المورد الحرج: يحمّل Typesense الفهرس القابل للبحث كاملًا في الذاكرة (تحتسب وثائقه من 2 إلى 3 أضعاف حجم الحقول القابلة للبحث)، ويجيب Meilisearch بسرعة أكبر كلما اتّسعت الذاكرة لفهرسه. لبضع عشرات الآلاف من المستندات، يكفي 1 إلى 2 غيغابايت من الذاكرة و1 vCPU. ولمئات الآلاف إلى بضعة ملايين من المستندات مع الأوجه، استهدف 4 غيغابايت و2 vCPU. قرص SSD يسرّع الاستمرار وإعادة التحميل عند الإقلاع. تحتاج إلى Docker وCompose، ونطاق فرعي (search.yourdomain.com) إذا كشفت الواجهة البرمجية للواجهة الأمامية، وبروكسي عكسي لأجل TLS. جهّز مفتاحًا رئيسيًا قويًا ومفاتيح بحث محدودة النطاق كي لا تكشف مفتاح المسؤول أبدًا من جهة المتصفح.
نشر Meilisearch (أو Typesense) على VPS
تعريف خدمة Docker
عرِّف
getmeili/meilisearch(أوtypesense/typesense)، وركِّب وحدة تخزين لاستمرار الفهرس، ومرّر المفتاح الرئيسي عبر متغير بيئة (MEILI_MASTER_KEYأوTYPESENSE_API_KEY)، مولَّدًا بالأمرopenssl rand -base64 32ومحفوظًا في.env. ولـ Meilisearch أضِفMEILI_ENV=production: يصبح المفتاح الرئيسي (16 بايت على الأقل) إلزاميًا وتُعطَّل معاينة البحث المدمجة. اربط المنفذ7700/8108محليًا فقط.التشغيل والتحقق من الصحة
نفِّذ
docker compose up -dثم اختبرcurl http://127.0.0.1:7700/health. استجابةavailableتؤكّد أن المحرك جاهز لاستقبال المستندات.إنشاء الفهرس وتغذية البيانات
أرسِل مستنداتك بصيغة JSON عبر الواجهة البرمجية (POST إلى
/indexes/produits/documents). عرِّف السمات القابلة للبحث والتصفية والفرز؛ في محرك البحث، يؤثّر ترتيب تعريف السمات القابلة للبحث في الملاءمة مباشرةً.كشف الواجهة البرمجية خلف بروكسي عكسي
وجِّه search.yourdomain.com إلى المنفذ المحلي باستخدام Caddy أو Nginx لأجل HTTPS. اقصر CORS على نطاق تطبيقك: في البروكسي بالنسبة إلى Meilisearch الذي لا يملك خيار CORS، وبالخيار
--cors-domainsبالنسبة إلى Typesense. لا يمنع CORS سوى المتصفحات: المفتاح محدود النطاق هو ما يحمي المحرك فعلًا.توليد مفاتيح محدودة النطاق
أنشئ مفتاحًا مقصورًا على عمليات البحث على فهرس معيّن، ليُستخدَم من جهة المتصفح. يجب ألا يغادر المفتاح الرئيسي الخادم أبدًا أو يظهر في شيفرة الواجهة الأمامية.
المزامنة مع قاعدة بياناتك
أنشئ مهمة (webhook أو مهمة مجدولة) تدفع عمليات الإنشاء والتحديث إلى الفهرس عند كل تغيير في قاعدة البيانات، للحفاظ على اتساق البحث مع مصدر الحقيقة.
مرّر الجدول أفقيًا
| المعيار | Meilisearch | Typesense |
|---|---|---|
| سهولة البدء | بسيط جدًا، ملاءمة افتراضية ممتازة | بسيط، تحكّم أكثر وضوحًا |
| التسامح مع الأخطاء المطبعية | أصلي وقابل للضبط | أصلي، قابل للتهيئة لكل حقل |
| التحكّم في الترتيب | قواعد ترتيب مُرتَّبة | دقيق جدًا (ترتيب لكل حقل، أوزان) |
| الأوجه / عوامل التصفية | كاملة | كاملة وعالية الأداء |
| التوافر العالي | التناسخ والتجزئة (sharding) حكر على إصدار Enterprise | تجميع Raft مدمج |
| استهلاك الذاكرة | الفهرس على القرص، والذاكرة مخزن مؤقت | الفهرس القابل للبحث كاملًا في الذاكرة |
| البحث الشعاعي (vector) | مدعوم | مدعوم |
| اللغة / النشر | Rust، ثنائي واحد (MIT؛ إصدار Enterprise بترخيص BUSL 1.1) | C++، ثنائي واحد (GPL v3) |
قبل المبالغة في حجم الـ VPS، لا تفهرس سوى الحقول القابلة للبحث فعلًا. تخزين نص HTML كامل وكبير في الفهرس يضخّم الذاكرة بلا داعٍ: فهرس العنوان والوسوم وملخصًا، واحتفظ بالمحتوى الثقيل في قاعدة البيانات، يُجلب بعد النقر. ستقلّل بصمة الذاكرة بوضوح من دون أن تخسر في الملاءمة.