
⚡ไคลเอนต์ Meilisearch API ที่เขียนขึ้นเพื่อสนิม?
Meilisearch Rust เป็นไคลเอนต์ Meilisearch API สำหรับนักพัฒนาสนิม
Meilisearch เป็นเครื่องมือค้นหาโอเพนซอร์ซ เรียนรู้เพิ่มเติมเกี่ยวกับ Meilisearch
readme นี้มีเอกสารทั้งหมดที่คุณต้องเริ่มใช้ Meilisearch SDK นี้
สำหรับข้อมูลทั่วไปเกี่ยวกับวิธีการใช้ Meilisearch-เช่นการอ้างอิง API ของเราการสอนคำแนะนำและบทความเชิงลึก-อ้างอิงเว็บไซต์เอกสารหลักของเรา
บอกลาการปรับใช้เซิร์ฟเวอร์และการอัปเดตด้วยตนเองด้วยคลาวด์ Meilisearch เริ่มต้นด้วยการทดลองใช้ฟรี 14 วัน! ไม่ต้องใช้บัตรเครดิต
หากต้องการใช้ meilisearch-sdk ให้เพิ่มสิ่งนี้ลงใน Cargo.toml ของคุณ:
[ dependencies ]
meilisearch-sdk = " 0.27.1 "การพึ่งพาตัวเลือกต่อไปนี้อาจมีประโยชน์:
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 " ] } ลังนี้เป็น async แต่คุณสามารถเลือกที่จะใช้ async runtime เช่น Tokio หรือเพียงบล็อกในอนาคต คุณสามารถเปิดใช้งานคุณสมบัติ sync เพื่อให้ Sync โครงสร้างส่วนใหญ่ มันอาจจะช้าลงเล็กน้อย
การใช้ลังนี้เป็นไปได้โดยไม่ต้องใช้ Serde แต่มีคุณสมบัติมากมายที่ต้องการ Serde
ลังนี้ต้องใช้เซิร์ฟเวอร์ meilisearch เพื่อเรียกใช้
มีวิธีง่าย ๆ มากมายในการดาวน์โหลดและเรียกใช้อินสแตนซ์ meilisearch
ตัวอย่างเช่นการใช้คำสั่ง curl ในเทอร์มินัลของคุณ:
# Install Meilisearch
curl -L https://install.meilisearch.com | sh
# Launch Meilisearch
./meilisearch --master-key=masterKeyNB: คุณสามารถดาวน์โหลด meilisearch จาก Homebrew หรือ 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 ( ) ;
} ด้วย uid คุณสามารถตรวจสอบสถานะ ( enqueued , canceled , processing , succeeded หรือ failed ) ของเอกสารของคุณนอกจากนี้โดยใช้งาน
// Meilisearch is typo-tolerant:
println ! ( "{:?}" , client.index ( "movies_2" ) .search ( ) .with_query ( "caorl" ) .execute::< Movie > ( ) . await .unwrap ( ) .hits ) ;เอาท์พุท:
[Movie { id: 1, title: String::from("Carol"), genres: vec!["Romance", "Drama"] }]
เอาต์พุต 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 ) ;เอาต์พุต JSON:
{
"hits" : [
{
"id" : 6 ,
"title" : " Philadelphia " ,
"_formatted" : {
"id" : 6 ,
"title" : " <em>Phil</em>adelphia " ,
"genre" : [ " Drama " ]
}
}
],
"offset" : 0 ,
"limit" : 20 ,
"processingTimeMs" : 0 ,
"query" : " phil "
} หากคุณต้องการเปิดใช้งานการกรองคุณต้องเพิ่มแอตทริบิวต์ของคุณลงในการตั้งค่าดัชนี filterableAttributes
let filterable_attributes = [
"id" ,
"genres" ,
] ;
client . index ( "movies_4" ) . set_filterable_attributes ( & filterable_attributes ) . await . unwrap ( ) ;คุณจะต้องดำเนินการนี้เพียงครั้งเดียว
โปรดทราบว่า Meilisearch จะสร้างดัชนีของคุณใหม่เมื่อใดก็ตามที่คุณอัปเดต filterableAttributes ขึ้นอยู่กับขนาดของชุดข้อมูลของคุณอาจต้องใช้เวลา คุณสามารถติดตามกระบวนการโดยใช้งาน
จากนั้นคุณสามารถทำการค้นหา:
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 ) ;เอาต์พุต JSON:
{
"hits" : [
{
"id" : 2 ,
"title" : " Wonder Woman " ,
"genres" : [ " Action " , " Adventure " ]
}
],
"offset" : 0 ,
"limit" : 20 ,
"estimatedTotalHits" : 1 ,
"processingTimeMs" : 0 ,
"query" : " wonder "
}HttpClient โดยค่าเริ่มต้น SDK ใช้ reqwest เพื่อโทร HTTP SDK ช่วยให้คุณปรับแต่งไคลเอนต์ HTTP โดยใช้คุณสมบัติ HttpClient ด้วยตัวเองและเริ่มต้น Client ด้วยวิธีการ new_with_client คุณอาจสนใจคุณลักษณะ futures-unsend ซึ่งช่วยให้คุณระบุไคลเอนต์ HTTP ที่ไม่ส่งผ่าน
SDK สนับสนุน WASM ผ่าน Reqwest คุณจะต้องเปิดใช้งานฟีเจอร์ futures-unsend ในขณะที่นำเข้า
ลังนี้รองรับ WASM อย่างเต็มที่
ความแตกต่างเพียงอย่างเดียวระหว่าง WASM และเวอร์ชันดั้งเดิมคือเวอร์ชันดั้งเดิมมีตัวแปรอีกหนึ่งตัว ( Error::Http ) ในข้อผิดพลาด enum นั่นไม่สำคัญมากนัก แต่เราสามารถเพิ่มตัวแปรนี้ใน WASM ได้เช่นกัน
อย่างไรก็ตามการสร้างโปรแกรมที่ตั้งใจจะทำงานในเว็บเบราว์เซอร์ต้องมีการออกแบบ ที่ แตกต่างจากโปรแกรม CLI หากต้องการดูตัวอย่างของแอปพลิเคชันที่เป็นสนิมอย่างง่ายโดยใช้ meilisearch ดูตัวอย่างของเรา
คำเตือน: meilisearch-sdk จะตื่นตระหนกหากไม่มีหน้าต่าง (เช่น: ส่วนขยายเว็บ)
แพ็คเกจนี้รับประกันความเข้ากันได้กับเวอร์ชัน v1.x ของ Meilisearch แต่คุณสมบัติบางอย่างอาจไม่มีอยู่ โปรดตรวจสอบปัญหาสำหรับข้อมูลเพิ่มเติม
การบริจาคใหม่ใด ๆ เป็นมากกว่าการต้อนรับในโครงการนี้!
หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเวิร์กโฟลว์การพัฒนาหรือต้องการมีส่วนร่วมโปรดเยี่ยมชมแนวทางการสนับสนุนของเราสำหรับคำแนะนำโดยละเอียด!
Meilisearch จัดหาและดูแล SDK และเครื่องมือรวม จำนวนมากเช่นนี้ เราต้องการมอบ ประสบการณ์การค้นหาที่น่าทึ่งให้กับทุกคนสำหรับโครงการทุกประเภท หากคุณต้องการมีส่วนร่วมให้คำแนะนำหรือเพียงแค่รู้ว่าเกิดอะไรขึ้นตอนนี้ให้ไปเยี่ยมเราในที่เก็บคำแนะนำการรวมเข้าด้วยกัน