
⚡ Klien API Meilisearch ditulis untuk karat?
Meilisearch Rust adalah klien API Meilisearch untuk pengembang Rust.
Meilisearch adalah mesin pencari sumber terbuka. Pelajari lebih lanjut tentang Meilisearch.
Readme ini berisi semua dokumentasi yang Anda butuhkan untuk mulai menggunakan SDK Meilisearch ini.
Untuk informasi umum tentang cara menggunakan Meilisearch-seperti referensi API kami, tutorial, panduan, dan artikel mendalam-merujuk pada situs web dokumentasi utama kami.
Ucapkan selamat tinggal pada penyebaran server dan pembaruan manual dengan cloud Meilisearch. Mulailah dengan uji coba gratis 14 hari! Tidak diperlukan kartu kredit.
Untuk menggunakan meilisearch-sdk , tambahkan ini ke Cargo.toml Anda.toml:
[ dependencies ]
meilisearch-sdk = " 0.27.1 "Ketergantungan opsional berikut mungkin juga berguna:
futures = " 0.3 " # To be able to block on async functions if you are not using an async runtime
serde = { version = " 1.0 " , features = [ " derive " ] } Peti ini async tetapi Anda dapat memilih untuk menggunakan runtime async seperti Tokio atau hanya memblokir masa depan. Anda dapat mengaktifkan fitur sync untuk membuat sebagian besar struct Sync . Mungkin sedikit lebih lambat.
Menggunakan peti ini dimungkinkan tanpa serde, tetapi banyak fitur memerlukan serde.
Peti ini membutuhkan server Meilisearch untuk dijalankan.
Ada banyak cara mudah untuk mengunduh dan menjalankan contoh Meilisearch.
Misalnya, menggunakan perintah curl di terminal Anda:
# Install Meilisearch
curl -L https://install.meilisearch.com | sh
# Launch Meilisearch
./meilisearch --master-key=masterKeyNB: Anda juga dapat mengunduh Meilisearch dari Homebrew atau Apt .
use meilisearch_sdk :: client :: * ;
use serde :: { Serialize , Deserialize } ;
use futures :: executor :: block_on ;
# [ derive ( Serialize , Deserialize , Debug ) ]
struct Movie {
id : usize ,
title : String ,
genres : Vec < String > ,
}
# [ tokio :: main ( flavor = "current_thread" ) ]
async fn main ( ) {
// Create a client (without sending any request so that can't fail)
let client = Client :: new ( MEILISEARCH_URL , Some ( MEILISEARCH_API_KEY ) ) . unwrap ( ) ;
// An index is where the documents are stored.
let movies = client . index ( "movies" ) ;
// Add some movies in the index. If the index 'movies' does not exist, Meilisearch creates it when you first add the documents.
movies . add_documents ( & [
Movie { id : 1 , title : String :: from ( "Carol" ) , genres : vec ! [ "Romance" .to_string ( ) , "Drama" .to_string ( ) ] } ,
Movie { id : 2 , title : String :: from ( "Wonder Woman" ) , genres : vec ! [ "Action" .to_string ( ) , "Adventure" .to_string ( ) ] } ,
Movie { id : 3 , title : String :: from ( "Life of Pi" ) , genres : vec ! [ "Adventure" .to_string ( ) , "Drama" .to_string ( ) ] } ,
Movie { id : 4 , title : String :: from ( "Mad Max" ) , genres : vec ! [ "Adventure" .to_string ( ) , "Science Fiction" .to_string ( ) ] } ,
Movie { id : 5 , title : String :: from ( "Moana" ) , genres : vec ! [ "Fantasy" .to_string ( ) , "Action" .to_string ( ) ] } ,
Movie { id : 6 , title : String :: from ( "Philadelphia" ) , genres : vec ! [ "Drama" .to_string ( ) ] } ,
] , Some ( "id" ) ) . await . unwrap ( ) ;
} Dengan uid , Anda dapat memeriksa status ( enqueued , canceled , processing , succeeded atau failed ) dari penambahan dokumen Anda menggunakan tugas.
// Meilisearch is typo-tolerant:
println ! ( "{:?}" , client.index ( "movies_2" ) .search ( ) .with_query ( "caorl" ) .execute::< Movie > ( ) . await .unwrap ( ) .hits ) ;Keluaran:
[Movie { id: 1, title: String::from("Carol"), genres: vec!["Romance", "Drama"] }]
Output JSON:
{
"hits" : [{
"id" : 1 ,
"title" : " Carol " ,
"genres" : [ " Romance " , " Drama " ]
}],
"offset" : 0 ,
"limit" : 10 ,
"processingTimeMs" : 1 ,
"query" : " caorl "
} let search_result = client . index ( "movies_3" )
. search ( )
. with_query ( "phil" )
. with_attributes_to_highlight ( Selectors :: Some ( & [ "*" ] ) )
. execute :: < Movie > ( )
. await
. unwrap ( ) ;
println ! ( "{:?}" , search_result.hits ) ;Output JSON:
{
"hits" : [
{
"id" : 6 ,
"title" : " Philadelphia " ,
"_formatted" : {
"id" : 6 ,
"title" : " <em>Phil</em>adelphia " ,
"genre" : [ " Drama " ]
}
}
],
"offset" : 0 ,
"limit" : 20 ,
"processingTimeMs" : 0 ,
"query" : " phil "
} Jika Anda ingin mengaktifkan penyaringan, Anda harus menambahkan atribut Anda ke pengaturan indeks filterableAttributes .
let filterable_attributes = [
"id" ,
"genres" ,
] ;
client . index ( "movies_4" ) . set_filterable_attributes ( & filterable_attributes ) . await . unwrap ( ) ;Anda hanya perlu melakukan operasi ini sekali.
Perhatikan bahwa Meilisearch akan membangun kembali indeks Anda setiap kali Anda memperbarui filterableAttributes . Bergantung pada ukuran dataset Anda, ini mungkin memakan waktu. Anda dapat melacak proses menggunakan tugas.
Kemudian, Anda dapat melakukan pencarian:
let search_result = client . index ( "movies_5" )
. search ( )
. with_query ( "wonder" )
. with_filter ( "id > 1 AND genres = Action" )
. execute :: < Movie > ( )
. await
. unwrap ( ) ;
println ! ( "{:?}" , search_result.hits ) ;Output JSON:
{
"hits" : [
{
"id" : 2 ,
"title" : " Wonder Woman " ,
"genres" : [ " Action " , " Adventure " ]
}
],
"offset" : 0 ,
"limit" : 20 ,
"estimatedTotalHits" : 1 ,
"processingTimeMs" : 0 ,
"query" : " wonder "
}HttpClient Secara default, SDK menggunakan reqwest untuk melakukan panggilan HTTP. SDK memungkinkan Anda menyesuaikan klien HTTP dengan mengimplementasikan sendiri sifat HttpClient dan menginisialisasi Client dengan metode new_with_client . Anda mungkin tertarik dengan fitur futures-unsend yang memungkinkan Anda menentukan klien HTTP yang tidak bergantung.
SDK mendukung Wasm melalui Reqwest. Anda harus mengaktifkan fitur futures-unsend saat mengimpornya.
Peti ini sepenuhnya mendukung WASM.
Satu -satunya perbedaan antara WASM dan versi asli adalah bahwa versi asli memiliki satu varian lagi ( Error::Http ) dalam kesalahan enum. Itu seharusnya tidak terlalu penting tetapi kami juga bisa menambahkan varian ini dalam Wasm.
Namun, membuat program yang dimaksudkan untuk dijalankan di browser web membutuhkan desain yang sangat berbeda dari program CLI. Untuk melihat contoh aplikasi web karat sederhana menggunakan Meilisearch, lihat demo kami.
Peringatan: meilisearch-sdk akan panik jika tidak ada jendela yang tersedia (mis: ekstensi web).
Paket ini menjamin kompatibilitas dengan versi v1.x dari Meilisearch, tetapi beberapa fitur mungkin tidak ada. Silakan periksa masalah untuk info lebih lanjut.
Kontribusi baru apa pun lebih dari disambut dalam proyek ini!
Jika Anda ingin tahu lebih banyak tentang alur kerja pengembangan atau ingin berkontribusi, silakan kunjungi pedoman yang berkontribusi untuk instruksi terperinci!
Meilisearch menyediakan dan memelihara banyak SDK dan alat integrasi seperti ini. Kami ingin memberi semua orang pengalaman pencarian yang luar biasa untuk segala jenis proyek . Jika Anda ingin berkontribusi, membuat saran, atau hanya tahu apa yang terjadi sekarang, kunjungi kami di repositori panduan integrasi.