Meilisearch Python SDK มีทั้งไคลเอนต์อะซิงก์และซิงค์สำหรับ Meilisearch API
ไคลเอนต์ใดที่จะใช้ขึ้นอยู่กับกรณีการใช้งานของคุณ หากฐานโค้ดที่คุณใช้งานอยู่ใช้ asyncio เช่น หากคุณใช้ FastAPI ให้เลือก AsyncClient
หรือเลือก sync Client
ฟังก์ชันการทำงานของไคลเอ็นต์ทั้งสองจะเหมือนกัน ความแตกต่างคือ AsyncClient
จัดเตรียมวิธีการ async และใช้ AsyncIndex
ด้วยวิธี async เพิ่มเติมของตัวเอง ในทางกลับกัน 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 ซึ่งหมายความว่าหากโค้ดของคุณไม่ได้ใช้ประโยชน์จากอะซินซิโอหรือไม่บล็อกลูปเหตุการณ์ คุณจะไม่เห็นข้อดีที่นี่และประสิทธิภาพระหว่างไคลเอนต์จะใกล้เคียงกันมาก
การทดสอบนี้เปรียบเทียบระยะเวลาที่ใช้ในการส่งเอกสาร 1 ล้านชุดในชุดละ 1,000 ชุดไปยังเซิร์ฟเวอร์ Meilisearch เพื่อทำดัชนี (ยิ่งต่ำกว่ายิ่งดี) เวลาไม่ได้คำนึงถึงระยะเวลาที่ Meilisearch ใช้ในการจัดทำดัชนีเอกสาร เนื่องจากเวลาดังกล่าวอยู่นอกฟังก์ชันการทำงานของไลบรารี
การทดสอบนี้เปรียบเทียบระยะเวลาที่ใช้ในการค้นหา 1,000 ครั้ง (ต่ำกว่าดีกว่า)
Prashanth Rao ทำการทดสอบอิสระและพบว่าไคลเอ็นต์อะซิงก์นี้เร็วกว่าไคลเอ็นต์การซิงค์ประมาณ 30% สำหรับการนำเข้าข้อมูล คุณสามารถดูบทความดีๆ เกี่ยวกับผลลัพธ์ที่เขาทดสอบได้ในบล็อกโพสต์ของเขา
pytest-meilisearch เป็นปลั๊กอิน pytest ที่สามารถช่วยทดสอบโค้ดของคุณได้ มันมีรหัสแผ่นหม้อไอน้ำจำนวนมากที่คุณต้องการ
ดูเอกสารของเราสำหรับเอกสารฉบับเต็ม
ยินดีมีส่วนร่วมในโครงการนี้ หากคุณสนใจที่จะบริจาค โปรดดูคู่มือการบริจาคของเรา