Meilisearch Python SDK menyediakan klien async dan sinkronisasi untuk Meilisearch API.
Klien mana yang akan digunakan bergantung pada kasus penggunaan Anda. Jika basis kode yang Anda gunakan menggunakan asyncio, misalnya jika Anda menggunakan FastAPI, pilih AsyncClient
, jika tidak, pilih sinkronisasi Client
. Fungsionalitas kedua klien adalah sama, perbedaannya adalah AsyncClient
menyediakan metode async dan menggunakan AsyncIndex
dengan metode async tambahannya sendiri. Di sisi lain, Client
menyediakan metode pemblokiran dan menggunakan Index
dengan metode pemblokirannya sendiri.
Disarankan menggunakan lingkungan virtual untuk menginstal paket ini. Setelah lingkungan virtual dibuat dan diaktifkan, instal paket dengan:
pip install meilisearch-python-sdk
Ada beberapa cara untuk menjalankan Meilisearch. Pilih salah satu yang paling sesuai untuk kasus penggunaan Anda, lalu mulai server.
Sebagai contoh untuk menggunakan 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 )
Server akan mengembalikan id pembaruan yang dapat digunakan untuk mendapatkan status pembaruan. Untuk melakukan ini, Anda akan menyimpan respons hasil dari penambahan dokumen ke variabel, ini akan menjadi objek UpdateId
, dan menggunakannya untuk memeriksa status pembaruan.
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" ,
)
Informasi tentang parameter dapat ditemukan di bagian parameter pencarian pada dokumentasi.
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" ,
)
Tolok ukur berikut membandingkan perpustakaan ini dengan perpustakaan resmi Meilisearch Python. Perhatikan bahwa semua peningkatan kinerja yang terlihat dengan AsyncClient
dicapai dengan memanfaatkan asyncio. Ini berarti bahwa jika kode Anda tidak memanfaatkan asyncio atau tidak memblokir loop peristiwa, keuntungan di sini tidak akan terlihat dan kinerja antar klien akan sangat mirip.
Pengujian ini membandingkan berapa lama waktu yang dibutuhkan untuk mengirim 1 juta dokumen dalam batch 1.000 ke server Meilisearch untuk diindeks (lebih rendah lebih baik). Waktu tidak memperhitungkan berapa lama Meilisearch mengindeks dokumen karena itu di luar fungsi perpustakaan.
Tes ini membandingkan berapa lama waktu yang dibutuhkan untuk menyelesaikan 1000 pencarian (lebih rendah lebih baik)
Prashanth Rao melakukan beberapa pengujian independen dan menemukan klien asinkron ini ~30% lebih cepat daripada klien sinkronisasi untuk penyerapan data. Anda dapat menemukan tulisan bagus tentang hasil pengujiannya di postingan blognya.
pytest-meilisearch adalah plugin pytest yang dapat membantu menguji kode Anda. Ini menyediakan banyak kode pelat ketel yang Anda perlukan.
Lihat dokumen kami untuk dokumentasi lengkap.
Kontribusi untuk proyek ini sangat diharapkan. Jika Anda tertarik untuk berkontribusi, silakan lihat panduan berkontribusi kami