
⚡ Der Meilisearch -API -Client für Rost geschrieben?
Meilisearch Rust ist der Meilisearch -API -Client für Rust -Entwickler.
Meilisearch ist eine Open-Source-Suchmaschine. Erfahren Sie mehr über Meilisearch.
Diese Readme enthält alle Dokumentationen, die Sie für die Verwendung dieses Meilisearch -SDK benötigen.
Allgemeine Informationen zur Verwendung von Meilisearch-wie in unserer API-Referenz, Tutorials, Führern und ausführlichen Artikeln-lassen Sie sich auf unsere Hauptdokumentations-Website beziehen.
Verabschieden Sie sich von der Server -Bereitstellung und den manuellen Updates mit Meilisearch Cloud. Beginnen Sie mit einer 14-tägigen kostenlosen Testversion! Keine Kreditkarte erforderlich.
Um meilisearch-sdk zu verwenden, fügen Sie dies Ihrer Cargo.toml hinzu.
[ dependencies ]
meilisearch-sdk = " 0.27.1 "Die folgenden optionalen Abhängigkeiten können ebenfalls nützlich sein:
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 " ] } Diese Kiste ist async , aber Sie können sich für eine asynchronisierte Laufzeit wie Tokio verwenden oder einfach nur auf Futures blockieren. Sie können die sync -Funktion aktivieren, um die meisten Strukturen zu Sync . Es kann etwas langsamer sein.
Die Verwendung dieser Kiste ist ohne Serde möglich, aber viele Funktionen erfordern SERDE.
Diese Kiste erfordert, dass ein Meilisearch -Server ausgeführt wird.
Es gibt viele einfache Möglichkeiten, eine Meilisearch -Instanz herunterzuladen und auszuführen.
Verwenden Sie beispielsweise den Befehl curl in Ihrem Terminal:
# Install Meilisearch
curl -L https://install.meilisearch.com | sh
# Launch Meilisearch
./meilisearch --master-key=masterKeyNB: Sie können auch Meilisearch von homebrew oder apt herunterladen.
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 ( ) ;
} Mit der uid können Sie den Status ( enqueued , canceled , processing , succeeded oder failed ) Ihrer Dokumente unter Verwendung der Aufgabe überprüfen.
// Meilisearch is typo-tolerant:
println ! ( "{:?}" , client.index ( "movies_2" ) .search ( ) .with_query ( "caorl" ) .execute::< Movie > ( ) . await .unwrap ( ) .hits ) ;Ausgabe:
[Movie { id: 1, title: String::from("Carol"), genres: vec!["Romance", "Drama"] }]
JSON -Ausgabe:
{
"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 -Ausgabe:
{
"hits" : [
{
"id" : 6 ,
"title" : " Philadelphia " ,
"_formatted" : {
"id" : 6 ,
"title" : " <em>Phil</em>adelphia " ,
"genre" : [ " Drama " ]
}
}
],
"offset" : 0 ,
"limit" : 20 ,
"processingTimeMs" : 0 ,
"query" : " phil "
} Wenn Sie die Filterung aktivieren möchten, müssen Sie Ihre Attribute zur Indexeinstellung filterableAttributes hinzufügen.
let filterable_attributes = [
"id" ,
"genres" ,
] ;
client . index ( "movies_4" ) . set_filterable_attributes ( & filterable_attributes ) . await . unwrap ( ) ;Sie müssen diesen Vorgang nur einmal ausführen.
Beachten Sie, dass Meilisearch Ihren Index wieder aufbauen wird, wenn Sie filterableAttributes aktualisieren. Abhängig von der Größe Ihres Datensatzes kann dies einige Zeit dauern. Sie können den Prozess mit den Aufgaben verfolgen.
Dann können Sie die Suche durchführen:
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 -Ausgabe:
{
"hits" : [
{
"id" : 2 ,
"title" : " Wonder Woman " ,
"genres" : [ " Action " , " Adventure " ]
}
],
"offset" : 0 ,
"limit" : 20 ,
"estimatedTotalHits" : 1 ,
"processingTimeMs" : 0 ,
"query" : " wonder "
}HttpClient Standardmäßig verwendet der SDK reqwest um HTTP -Anrufe zu tätigen. Mit dem SDK können Sie den HTTP -Client anpassen, indem Sie das HttpClient -Merkmal selbst implementieren und den Client mit der Methode new_with_client initialisieren. Möglicherweise interessieren Sie sich für die futures-unsend -Funktion, mit der Sie einen Nicht-Send-HTTP-Client angeben können.
Der SDK unterstützt WASM durch Reqwest. Sie müssen jedoch die futures-unsend Funktionsfunktion aktivieren, während Sie sie importieren.
Diese Kiste unterstützt WASM voll.
Der einzige Unterschied zwischen der WASM und der nativen Version besteht darin, dass die native Version eine weitere Variante ( Error::Http ) im Fehler Enum hat. Das sollte nicht so wichtig sein, aber wir konnten diese Variante auch in WASM hinzufügen.
Ein Programm, das in einem Webbrowser ausgeführt werden soll, erfordert jedoch ein ganz anderes Design als ein CLI -Programm. Um ein Beispiel für eine einfache Rust -Web -App mit Meilisearch zu sehen, finden Sie in unserer Demo.
WARNUNG: meilisearch-sdk wird in Panik geraten, wenn kein Fenster verfügbar ist (Beispiel: Weberweiterung).
Dieses Paket garantiert Kompatibilität mit Version V1.x von Meilisearch, aber einige Funktionen sind möglicherweise nicht vorhanden. Bitte überprüfen Sie die Probleme, um weitere Informationen zu erhalten.
Jeder neue Beitrag ist in diesem Projekt mehr als willkommen!
Wenn Sie mehr über den Entwicklungsworkflow oder einen Beitrag leisten möchten, besuchen Sie bitte unsere beitragenden Richtlinien für detaillierte Anweisungen!
Meilisearch bietet und verwaltet viele SDKs und Integrationstools wie diese. Wir möchten jedem ein erstaunliches Sucherlebnis für jede Art von Projekt bieten. Wenn Sie einen Beitrag leisten, Vorschläge machen oder nur wissen möchten, was gerade vor sich geht, besuchen Sie uns im Integration-Guides-Repository.