يوفر Meilisearch Python SDK عميلاً غير متزامن ومتزامن لواجهة برمجة تطبيقات Meilisearch.
يعتمد العميل الذي ستستخدمه على حالة الاستخدام الخاصة بك. إذا كانت قاعدة التعليمات البرمجية التي تعمل بها تستخدم asyncio، على سبيل المثال، إذا كنت تستخدم FastAPI، فاختر AsyncClient
، وإلا فاختر sync Client
. وظيفة العميلين هي نفسها، والفرق هو أن AsyncClient
يوفر طرقًا غير متزامنة ويستخدم AsyncIndex
مع طرق غير متزامنة إضافية خاصة به. من ناحية أخرى، يوفر Client
طرق الحظر ويستخدم Index
بطرق الحظر الخاصة به.
يوصى باستخدام بيئة افتراضية لتثبيت هذه الحزمة. بمجرد إنشاء البيئة الافتراضية وتنشيطها، قم بتثبيت الحزمة باستخدام:
pip install meilisearch-python-sdk
هناك عدة طرق لتشغيل Meilisearch. اختر الخيار الذي يناسب حالة الاستخدام الخاصة بك ثم قم بتشغيل الخادم.
كمثال لاستخدام Docker:
docker pull getmeili/meilisearch:latest
docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey
from meilisearch_python_sdk import AsyncClient
async with AsyncClient ( 'http://127.0.0.1:7700' , 'masterKey' ) as client :
index = client . index ( "books" )
documents = [
{ "id" : 1 , "title" : "Ready Player One" },
{ "id" : 42 , "title" : "The Hitchhiker's Guide to the Galaxy" },
]
await index . add_documents ( documents )
from meilisearch_python_sdk import Client
client = Client ( 'http://127.0.0.1:7700' , 'masterKey' )
index = client . index ( "books" )
documents = [
{ "id" : 1 , "title" : "Ready Player One" },
{ "id" : 42 , "title" : "The Hitchhiker's Guide to the Galaxy" },
]
index . add_documents ( documents )
سيرجع الخادم معرف التحديث الذي يمكن استخدامه للحصول على حالة التحديثات. للقيام بذلك، عليك حفظ استجابة النتيجة من إضافة المستندات إلى متغير، وسيكون هذا كائن UpdateId
، واستخدامه للتحقق من حالة التحديثات.
update = await index . add_documents ( documents )
status = await client . index ( 'books' ). get_update_status ( update . update_id )
update = index . add_documents ( documents )
status = client . index ( 'books' ). get_update_status ( update . update_id )
search_result = await index . search ( "ready player" )
search_result = index . search ( "ready player" )
SearchResults (
hits = [
{
"id" : 1 ,
"title" : "Ready Player One" ,
},
],
offset = 0 ,
limit = 20 ,
nb_hits = 1 ,
exhaustive_nb_hits = bool ,
facets_distributionn = None ,
processing_time_ms = 1 ,
query = "ready player" ,
)
يمكن العثور على معلومات حول المعلمات في قسم معلمات البحث في الوثائق.
await index . search (
"guide" ,
attributes_to_highlight = [ "title" ],
filters = "book_id > 10"
)
index . search (
"guide" ,
attributes_to_highlight = [ "title" ],
filters = "book_id > 10"
)
SearchResults (
hits = [
{
"id" : 42 ,
"title" : "The Hitchhiker's Guide to the Galaxy" ,
"_formatted" : {
"id" : 42 ,
"title" : "The Hitchhiker's Guide to the <em>Galaxy</em>"
}
},
],
offset = 0 ,
limit = 20 ,
nb_hits = 1 ,
exhaustive_nb_hits = bool ,
facets_distributionn = None ,
processing_time_ms = 5 ,
query = "galaxy" ,
)
تقارن المعايير التالية هذه المكتبة بمكتبة Meilisearch Python الرسمية. لاحظ أن جميع مكاسب الأداء التي تمت مشاهدتها مع AsyncClient
يتم تحقيقها من خلال الاستفادة من asyncio. هذا يعني أنه إذا كانت التعليمات البرمجية الخاصة بك لا تستفيد من عدم المزامنة أو أنها لا تمنع حلقة الحدث، فلن يتم رؤية المكاسب هنا وسيكون الأداء بين العملاء متشابهًا جدًا.
يقارن هذا الاختبار المدة التي يستغرقها إرسال مليون مستند على دفعات مكونة من ألف مستند إلى خادم Meilisearch للفهرسة (الأقل هو الأفضل). الوقت لا يأخذ في الاعتبار المدة التي يستغرقها Meilisearch في فهرسة المستندات نظرًا لأن ذلك خارج وظيفة المكتبة.
يقارن هذا الاختبار المدة التي يستغرقها إكمال 1000 عملية بحث (الأقل هو الأفضل)
أجرى Prashanth Rao بعض الاختبارات المستقلة ووجد أن هذا العميل غير المتزامن أسرع بنسبة 30% تقريبًا من عميل المزامنة في استيعاب البيانات. يمكنك العثور على كتابة جيدة للنتائج التي اختبرها في منشور مدونته.
pytest-meilisearch هو مكون إضافي لـ pytest يمكنه المساعدة في اختبار الكود الخاص بك. إنه يوفر الكثير من رموز لوحة الغلاية التي ستحتاجها.
راجع مستنداتنا للحصول على الوثائق الكاملة.
المساهمات في هذا المشروع هي موضع ترحيب. إذا كنت مهتمًا بالمساهمة، فيرجى الاطلاع على دليل المساهمة الخاص بنا