يعد Typesense محرك بحث سريعًا ومتسامحًا مع الأخطاء المطبعية لبناء تجارب بحث مبهجة.
بديل ألغوليا مفتوح المصدر
بديل ElasticSearch أسهل في الاستخدام
الموقع | التوثيق | خريطة الطريق | مجتمع سلاك | مواضيع المجتمع | تغريد
فيما يلي بعض العروض التوضيحية المباشرة التي توضح عمل Typesense على مجموعات البيانات الكبيرة:
؟ إذا كنت تفضل مشاهدة مقاطع الفيديو:
ألا ترى ميزة في هذه القائمة؟ ابحث في أداة تتبع المشكلات لدينا إذا طلبها شخص ما بالفعل وأضف تعليقًا عليها يشرح حالة الاستخدام الخاصة بك، أو افتح إصدارًا جديدًا إذا لم يكن الأمر كذلك. نحن نعطي الأولوية لخريطة الطريق الخاصة بنا بناءً على تعليقات المستخدمين، لذلك نود أن نسمع منك.
إليك خريطة الطريق العامة لـ Typesense: https://typesense.link/roadmap.
يشرح العمود الأول أيضًا كيفية تحديد أولويات الميزات، وكيف يمكنك التأثير على تحديد الأولويات وإيقاع الإصدار لدينا.
نحن نرغب في قياس الأداء باستخدام مجموعات بيانات أكبر، إذا تمكنا من العثور على مجموعات كبيرة منها في النطاق العام. إذا كان لديك أي اقتراحات لمجموعات البيانات المنظمة المفتوحة، فيرجى إخبارنا بذلك عن طريق فتح مشكلة. سنكون سعداء أيضًا إذا تمكنت من مشاركة المعايير من مجموعات البيانات الكبيرة الخاصة بك. من فضلك أرسل لنا العلاقات العامة!
يتم استخدام Typesense من قبل مجموعة من المستخدمين عبر مجالات وقطاعات مختلفة.
في Typesense Cloud، نخدم أكثر من 10 مليار عملية بحث شهريًا. تم تنزيل صور Typesense's Docker أكثر من 12 مليون مرة.
لقد بدأنا مؤخرًا في توثيق من يستخدمه في معرضنا. إذا كنت ترغب في أن يتم إدراجك في القائمة، فلا تتردد في تعديل SHOWCASE.md وإرسال العلاقات العامة إلينا.
سترى أيضًا قائمة بشعارات المستخدم على الصفحة الرئيسية لـ Typesense Cloud.
الخيار 1: يمكنك تنزيل الحزم الثنائية التي ننشرها لنظامي Linux (x86_64 وarm64) وMac (x86_64).
الخيار 2: يمكنك أيضًا تشغيل Typesense من صورة Docker الرسمية الخاصة بنا.
الخيار 3: تشغيل مجموعة مُدارة باستخدام Typesense Cloud:
فيما يلي مثال سريع يوضح كيف يمكنك إنشاء مجموعة وفهرسة مستند والبحث فيه على Typesense.
لنبدأ ببدء تشغيل خادم Typesense عبر Docker:
docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:27.1 --data-dir /data --api-key=Hu52dwsas2AdxdE
لدينا عملاء API بعدة لغات، ولكن دعنا نستخدم عميل Python في هذا المثال.
قم بتثبيت عميل Python لـ Typesense:
pip install typesense
يمكننا الآن تهيئة العميل وإنشاء مجموعة companies
:
import typesense
client = typesense . Client ({
'api_key' : 'Hu52dwsas2AdxdE' ,
'nodes' : [{
'host' : 'localhost' ,
'port' : '8108' ,
'protocol' : 'http'
}],
'connection_timeout_seconds' : 2
})
create_response = client . collections . create ({
"name" : "companies" ,
"fields" : [
{ "name" : "company_name" , "type" : "string" },
{ "name" : "num_employees" , "type" : "int32" },
{ "name" : "country" , "type" : "string" , "facet" : True }
],
"default_sorting_field" : "num_employees"
})
الآن، دعونا نضيف مستندًا إلى المجموعة التي أنشأناها للتو:
document = {
"id" : "124" ,
"company_name" : "Stark Industries" ,
"num_employees" : 5215 ,
"country" : "USA"
}
client . collections [ 'companies' ]. documents . create ( document )
أخيرًا، لنبحث عن المستند الذي قمنا بفهرسته للتو:
search_parameters = {
'q' : 'stork' ,
'query_by' : 'company_name' ,
'filter_by' : 'num_employees:>100' ,
'sort_by' : 'num_employees:desc'
}
client . collections [ 'companies' ]. documents . search ( search_parameters )
هل لاحظت الخطأ المطبعي في نص الاستعلام؟ لا مشكلة كبيرة. يتعامل Typesense مع الأخطاء المطبعية خارج الصندوق!
تتوفر جولة تفصيلية خطوة بخطوة على موقعنا على الإنترنت هنا.
سيرشدك هذا خلال عملية بدء تشغيل خادم Typesense وفهرسة البيانات فيه والاستعلام عن مجموعة البيانات.
إليك وثائق واجهة برمجة التطبيقات الرسمية الخاصة بنا، المتوفرة على موقعنا الإلكتروني: https://typesense.org/api.
إذا لاحظت أي مشكلات تتعلق بالوثائق أو الإرشادات التفصيلية، فيرجى إخبارنا بذلك أو إرسال العلاقات العامة إلينا هنا: https://github.com/typesense/typesense-website.
بينما يمكنك بالتأكيد استخدام CURL للتفاعل مع Typesense Server مباشرة، فإننا نقدم عملاء API الرسميين لتبسيط استخدام Typesense من اللغة التي تختارها. يأتي عملاء API مدمجين مع إستراتيجية إعادة المحاولة الذكية لضمان مرونة استدعاءات API التي يتم إجراؤها عبرهم، خاصة في إعداد HA.
إذا لم نوفر عميل API بلغتك، فلا يزال بإمكانك استخدام أي مكتبة عملاء HTTP شائعة للوصول إلى واجهات برمجة التطبيقات الخاصة بـ Typesense مباشرةً.
فيما يلي بعض العملاء وعمليات التكامل التي ساهم بها المجتمع:
نحن نرحب بمساهمات المجتمع لإضافة المزيد من مكتبات العملاء الرسمية وعمليات التكامل. يرجى التواصل معنا على [email protected] أو فتح مشكلة على GitHub للتعاون معنا في الهندسة المعمارية.
لدينا أيضًا تكاملات الإطار التالية:
لدينا مجموعة Postman التي يديرها المجتمع هنا: https://github.com/typesense/postman.
Postman هو تطبيق يتيح لك تنفيذ طلبات HTTP عن طريق الإشارة والنقر، بدلا من الاضطرار إلى كتابتها في الوحدة الطرفية. تمنحك مجموعة Postman أعلاه طلبات قوالب يمكنك استيرادها إلى Postman، لإجراء استدعاءات API بسرعة إلى Typesense.
يمكنك استخدام محول InstantSearch.js الخاص بنا لبناء تجارب بحث قوية بسرعة، مع استكمال التصفية والفرز وترقيم الصفحات والمزيد.
وإليك الطريقة: https://typesense.org/docs/guide/search-ui-components.html
يعد Elasticsearch جزءًا كبيرًا من البرامج التي تتطلب قدرًا كبيرًا من الجهد للإعداد والإدارة والقياس والضبط. فهو يوفر لك بضعة آلاف من معلمات التكوين للوصول إلى التكوين المثالي. لذا فهو مناسب بشكل أفضل للفرق الكبيرة التي لديها النطاق الترددي لجعله جاهزًا للإنتاج، ومراقبته بانتظام وتوسيع نطاقه، خاصة عندما يحتاجون إلى تخزين مليارات المستندات وبيتابايت من البيانات (على سبيل المثال: السجلات).
تم تصميم Typesense خصيصًا لتقليل "وقت التسويق" للحصول على تجربة بحث ممتعة. إنه بديل خفيف الوزن ولكنه قوي وقابل للتطوير ويركز على سعادة المطورين وتجربتهم من خلال واجهة برمجة تطبيقات نظيفة وموثقة جيدًا ودلالات واضحة وافتراضيات ذكية بحيث يعمل بشكل جيد خارج الصندوق، دون الحاجة إلى تشغيل العديد من المقابض .
يعمل Elasticsearch أيضًا على JVM، والذي يمكن أن يكون في حد ذاته جهدًا كبيرًا لضبطه للتشغيل على النحو الأمثل. من ناحية أخرى، يعد Typesense ثنائيًا أصليًا واحدًا خفيف الوزن ومكتفيًا بذاته، لذا فهو سهل الإعداد والتشغيل.
شاهد مقارنة الميزات جنبًا إلى جنب هنا.
Algolia هو منتج خاص ومستضاف للبحث كخدمة ويعمل بشكل جيد عندما لا تكون التكلفة مشكلة. من خلال خبرتنا، تواجه المواقع والتطبيقات سريعة النمو حدود البحث والفهرسة، مصحوبة بترقيات باهظة الثمن للخطة مع توسعها.
من ناحية أخرى، يعد Typesense منتجًا مفتوح المصدر يمكنك تشغيله على البنية التحتية الخاصة بك أو استخدام عرض SaaS المُدار الخاص بنا - Typesense Cloud. الإصدار مفتوح المصدر مجاني للاستخدام (بالإضافة إلى تكاليف الأشعة تحت الحمراء الخاصة بك بالطبع). مع Typesense Cloud، لا نقوم بتحصيل الرسوم عن طريق السجلات أو عمليات البحث. بدلاً من ذلك، تحصل على مجموعة مخصصة ويمكنك إرسال أكبر قدر ممكن من البيانات وحركة المرور إليها. أنت تدفع فقط تكلفة ثابتة بالساعة ورسوم النطاق الترددي مقابل ذلك، اعتمادًا على التكوين الذي تختاره، على غرار معظم الأنظمة الأساسية السحابية الحديثة.
من منظور المنتج، تعتبر Typesense أقرب في روحها إلى Algolia من Elasticsearch. ومع ذلك، فقد تناولنا بعض القيود المهمة مع Algolia:
تتطلب Algolia مؤشرات منفصلة لكل ترتيب فرز، وهو ما يتم احتسابه ضمن حدود خطتك. يتم تحديد معظم إعدادات الفهرس مثل الحقول التي سيتم البحث فيها، والحقول التي يتم عرضها على الوجه، والحقول التي يتم التجميع حسبها، وإعدادات التصنيف، وما إلى ذلك مقدمًا عند إنشاء الفهرس مقابل القدرة على تعيينها بسرعة في وقت الاستعلام.
باستخدام Typesense، يمكن تكوين هذه الإعدادات في وقت البحث عبر معلمات الاستعلام مما يجعلها مرنة للغاية وتفتح حالات استخدام جديدة. يستطيع Typesense أيضًا أن يمنحك نتائج مرتبة باستخدام فهرس واحد، مقابل الاضطرار إلى إنشاء عدة فهرس. وهذا يساعد على تقليل استهلاك الذاكرة.
تقدم Algolia الميزات التالية التي لا تتوفر في Typesense حاليًا: التخصيص وتحليلات البحث المستندة إلى الخادم. بالنسبة للتحليلات، لا يزال بإمكانك إدارة بحثك من جانب العميل وإرسال مقاييس البحث إلى أداة تحليلات الويب التي تختارها.
نعتزم سد هذه الفجوة في Typesense، ولكن في هذه الأثناء، يرجى إعلامنا إذا كان أي من هذه الأمور يمثل عائقًا أمام حالة الاستخدام الخاصة بك عن طريق إنشاء طلب ميزة في أداة تعقب المشكلات لدينا.
شاهد مقارنة الميزات جنبًا إلى جنب هنا.
سوف يستهلك خادم Typesense الجديد حوالي 30 ميجابايت من الذاكرة. عندما تبدأ في فهرسة المستندات، سيزداد استخدام الذاكرة وفقًا لذلك. ويعتمد مقدار الزيادة على عدد الحقول التي تقوم بفهرستها ونوعها.
لقد سعينا جاهدين للحفاظ على هياكل البيانات في الذاكرة بسيطة. لإعطائك فكرة تقريبية: عندما تتم فهرسة مليون عنوان Hacker News مع نقاطها، يستهلك Typesense 165 ميجابايت من الذاكرة. نفس حجم تلك البيانات الموجودة على القرص بتنسيق JSON هو 88 ميجابايت. إذا كان لديك أي أرقام من مجموعات البيانات الخاصة بك والتي يمكننا إضافتها إلى هذا القسم، فيرجى إرسال العلاقات العامة إلينا!
من خلال خبرتنا، تشعر الشركات عمومًا بالقلق عندما تكون المكتبات التي تستخدمها مرخصة من GPL، حيث يتم دمج كود المكتبة مباشرة في الكود الخاص بها وسيؤدي إلى أعمال مشتقة ويؤدي إلى الامتثال لـ GPL. ومع ذلك، فإن Typesense Server هو برنامج خادم ونتوقع أن يقوم المستخدمون عادةً بتشغيله كبرنامج خفي منفصل، وعدم دمجه مع التعليمات البرمجية الخاصة بهم. تغطي GPL حالة الاستخدام هذه وتسمح بها بسخاء (على سبيل المثال: Linux مرخص بـ GPL) . الآن، AGPL هو ما يجعل الوصول إلى برنامج الخادم عبر الشبكة يؤدي إلى عمل مشتق وليس GPL. ولهذا السبب اخترنا عدم استخدام AGPL لـ Typesense.
الآن، إذا قام شخص ما بإجراء تعديلات على خادم Typesense، فإن GPL تسمح لك في الواقع بالاحتفاظ بالتعديلات لنفسك طالما أنك لا توزع الكود المعدل. لذلك يمكن للشركة على سبيل المثال تعديل خادم Typesense وتشغيل الكود المعدل داخليًا ولا يتعين عليها فتح مصدر تعديلاتها، طالما أنها تجعل الكود المعدل متاحًا لكل من لديه حق الوصول إلى البرنامج المعدل.
الآن، إذا أجرى شخص ما تعديلات على خادم Typesense وقام بتوزيع التعديلات، فهذا هو المكان الذي تبدأ فيه GPL. نظرًا لأننا نشرنا عملنا على المجتمع، نود أن تكون تعديلات الآخرين أيضًا مفتوحة للمجتمع في روح المصدر المفتوح. نحن نستخدم GPL لهذا الغرض. تسمح التراخيص الأخرى بتعديل عملنا مفتوح المصدر وجعله مصدرًا مغلقًا وتوزيعه، وهو ما نريد تجنبه باستخدام Typesense من أجل استدامة المشروع على المدى الطويل.
إليك المزيد من المعلومات الأساسية حول سبب استخدام GPL، كما هو موضح في Discourse: https://meta.discourse.org/t/why-gnu-license/2531. والعديد من النقاط المذكورة هناك تتردد في أذهاننا.
الآن، كل ما سبق ينطبق فقط على خادم Typesense. من المفترض بالفعل أن يتم دمج مكتبات عملائنا في كود مستخدمينا ولذلك يستخدمون ترخيص Apache.
باختصار، AGPL هو ما يمثل عادةً مشكلة بالنسبة لبرنامج الخادم وقد اخترنا عدم استخدامه. نعتقد أن GPL for Typesense Server تجسد جوهر ما نريده لهذا المشروع مفتوح المصدر. تتمتع GPL بتاريخ طويل من الاستخدام الناجح من قبل المشاريع الشهيرة مفتوحة المصدر. لا تزال مكتباتنا مرخصة من قبل Apache.
إذا كانت لديك تفاصيل تمنعك من استخدام Typesense بسبب مشكلة في الترخيص، فيسعدنا استكشاف هذا الموضوع بشكل أكبر معك. يرجى التواصل معنا.
إذا كانت لديك أسئلة عامة حول Typesense، أو تريد إلقاء التحية أو المتابعة فحسب، فنحن نود أن ندعوك للانضمام إلى مجتمع Slack العام الخاص بنا.
إذا واجهت أي مشكلات أو مشكلات، فيرجى إنشاء مشكلة في GitHub وسنبذل قصارى جهدنا للمساعدة.
نحن نسعى جاهدين لتقديم دعم جيد من خلال أدوات تتبع المشكلات لدينا على GitHub. ومع ذلك، إذا كنت ترغب في الحصول على دعم خاص ومحدد الأولوية من خلال:
نحن نقدم خيارات الدعم المدفوع الموضحة هنا.
نحن فريق بسيط في مهمة لإضفاء الطابع الديمقراطي على البحث وسنأخذ كل المساعدة التي يمكننا الحصول عليها! إذا كنت ترغب في المشاركة، فإليك المعلومات حول المكان الذي يمكننا الاستفادة من مساعدتك فيه: Contributing.md
إذا كنت ترغب في الحصول على التحديثات عندما نصدر إصدارات جديدة، فانقر على الزر "مشاهدة" في الجزء العلوي وحدد "الإصدارات فقط". سيرسل لك GitHub بعد ذلك إشعارات مع سجل التغيير مع كل إصدار جديد.
نقوم أيضًا بنشر تحديثات على حساب Twitter الخاص بنا حول الإصدارات والموضوعات الإضافية المتعلقة بـ Typesense. تابعنا هنا: @typesense.
سنقوم أيضًا بنشر التحديثات على مجتمع Slack الخاص بنا.
نحن نستخدم Bazel لبناء Typesense.
يتطلب Typesense التبعيات التالية:
يرجى الرجوع إلى خطوات بناء CI للحصول على أحدث مجموعة من التبعيات.
بمجرد تثبيتها، قم بتشغيل ما يلي من جذر الريبو:
bazel build //:typesense-server
سيستغرق البناء الأول بعض الوقت حيث يتم سحب مكتبات الطرف الثالث الأخرى وإنشائها كجزء من عملية الإنشاء.
© 2016 إلى الوقت الحاضر شركة Typesense Inc.