Meilisearch: محرك بحث open source بتشغّله على سيرفرك بدل Algolia
لو البحث في موقعك لسه LIKE والمستخدم لو غلط في حرف ميلاقيش حاجة، Meilisearch بيديك typo tolerance و hybrid search على سيرفرك. إزاي تجربه بـ docker وإيه اللي لازم تعمله قبل الـ production.
البحث في موقعك لسه شغال بـ LIKE '%كلمة%'؟ والمستخدم لو كتب كلمة غلط حرف واحد ميلاقيش ولا نتيجة؟ ده من أكتر الحاجات اللي بتخلي تجربة أي موقع أو dashboard تبان ضعيفة، والحل مش لازم يبقى Elasticsearch كامل ولا خدمة مدفوعة برة. هنا ييجي دور Meilisearch.
يعني إيه Meilisearch؟
Meilisearch محرك بحث open source بتشغّله على سيرفرك، وبيدعم الـ full-text search والـ semantic search والـ hybrid search اللي بيجمع الاتنين. الـ README بتاعه بيعرض صفحات مقارنة رسمية بينه وبين Algolia و Elasticsearch و Typesense، يعني هو بيقدّم نفسه كبديل تقدر تستضيفه بنفسك للبحث جوه المواقع والتطبيقات.
آخر إصدار على GitHub هو v1.56.0 (اتنشر 26 أكتوبر)، والمشروع شغال ومش archived.
اللي بيقدمه (من الـ README)
- Search-as-you-type: النتايج بتظهر وإنت بتكتب، والـ README بيقول إنها بترجع في أقل من 50 ملي ثانية
- Typo tolerance: يلاقي النتيجة حتى لو المستخدم غلط في الكتابة
- Filtering و faceted search و sorting: تفلتر بالسعر أو القسم وتعرض عدد النتايج لكل فلتر
- Synonyms و geosearch: مرادفات للكلمات، وبحث بالموقع الجغرافي
- Hybrid search: بحث بالمعنى وبالكلمات مع بعض
- API keys بصلاحيات و tenant tokens: عشان الـ multi-tenancy، كل عميل يشوف الداتا بتاعته بس
- REST API و SDKs للغات كتير
- MCP server تجريبي: عشان الـ AI agents تقدر تبحث في الـ indexes مباشرة
التشغيل السريع (للتجربة)
الأمر ده من الـ README، وبيشغّله على البورت 7700 مع volume للداتا:
docker run -it --rm \
-p 7700:7700 \
-v $(pwd)/meili_data:/meili_data \
getmeili/meilisearch:latest
بعدها افتح http://localhost:7700، وابعتله documents بصيغة JSON من أي جدول عندك، وجرّب تبحث.
قبل ما تطلع بيه production (من التوثيق)
دي أهم نقطة، لأن ناس كتير بتشغّل التجربة وتسيبها كده:
- في وضع production، الـ master key إجباري ولازم يبقى 16 بايت على الأقل
- الـ master key ميتحطش في الـ frontend أبدًا. اعمل API key للبحث بس (search-only) واستخدمه في المتصفح
- خلي الداتا على volume، وإلا هتضيع مع أي إعادة تشغيل للـ container
الرخصة
الـ Community Edition تحت MIT. فيه كمان Enterprise Edition فيها مزايا زي الـ sharding تحت رخصة BUSL-1.1، ودي محتاجة اتفاق تجاري لو هتستخدمها في الإنتاج. يعني لو احتياجك بحث عادي لموقع أو تطبيق، الـ Community Edition كفاية، بس اقرا الرخصة كويس لو بتخطط لحجم كبير.
اعمل إيه دلوقتي
- شغّله بالأمر اللي فوق وابعتله JSON من جدول عندك
- جرّب تكتب كلمة غلط وشوف النتيجة بنفسك
- قبل ما تنشر: master key قوي، و API key للبحث بس في الـ frontend
رأيي
لموقع أو dashboard عادي، Meilisearch بيديك تجربة بحث محترمة جدًا من غير تعقيد Elasticsearch ومن غير فاتورة خدمة برة. الحاجة الوحيدة اللي محتاج تاخد بالك منها هي الرخصة لو هتحتاج مزايا الـ Enterprise زي الـ sharding، وتأمين الـ master key من أول يوم.
البحث في مشروعك الحالي شغال بإيه؟ LIKE ولا full-text ولا خدمة برة؟
المصادر
- Meilisearch
- Open Source
- Self-Hosted
- Search
- Backend