
⚡ Le client de l'API Meilisearch écrit pour la rouille?
Meilisearch Rust est le client de l'API Meilisearch pour les développeurs de rouille.
Meilisearch est un moteur de recherche open source. En savoir plus sur Meilisearch.
Cette lecture contient toute la documentation dont vous avez besoin pour commencer à utiliser ce SDK Meilisearch.
Pour des informations générales sur la façon d'utiliser MeiliSearch - comme notre référence API, nos tutoriels, nos guides et nos articles approfondis - référez-vous à notre site Web principal de documentation.
Dites au revoir au déploiement du serveur et aux mises à jour manuelles avec MeiliSearch Cloud. Commencez avec un essai gratuit de 14 jours! Aucune carte de crédit requise.
Pour utiliser meilisearch-sdk , ajoutez ceci à votre Cargo.toml :
[ dependencies ]
meilisearch-sdk = " 0.27.1 "Les dépendances facultatives suivantes peuvent également être utiles:
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 " ] } Cette caisse est async , mais vous pouvez choisir d'utiliser un runtime asynchrone comme Tokio ou simplement bloquer les futurs. Vous pouvez activer la fonction sync pour que la plupart des structures Sync . Cela peut être un peu plus lent.
L'utilisation de cette caisse est possible sans Serde, mais de nombreuses fonctionnalités nécessitent Serde.
Cette caisse nécessite un serveur Meilisearch pour s'exécuter.
Il existe de nombreuses façons faciles de télécharger et d'exécuter une instance MeiliSearch.
Par exemple, en utilisant la commande curl dans votre terminal:
# Install Meilisearch
curl -L https://install.meilisearch.com | sh
# Launch Meilisearch
./meilisearch --master-key=masterKeyNB: Vous pouvez également télécharger Meilisearch depuis Homebrew ou 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 ( ) ;
} Avec l' uid , vous pouvez vérifier le statut ( enqueued , canceled , processing , succeeded ou failed ) de vos documents ajout à l'aide de la tâche.
// Meilisearch is typo-tolerant:
println ! ( "{:?}" , client.index ( "movies_2" ) .search ( ) .with_query ( "caorl" ) .execute::< Movie > ( ) . await .unwrap ( ) .hits ) ;Sortir:
[Movie { id: 1, title: String::from("Carol"), genres: vec!["Romance", "Drama"] }]
Sortie 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 ) ;Sortie JSON:
{
"hits" : [
{
"id" : 6 ,
"title" : " Philadelphia " ,
"_formatted" : {
"id" : 6 ,
"title" : " <em>Phil</em>adelphia " ,
"genre" : [ " Drama " ]
}
}
],
"offset" : 0 ,
"limit" : 20 ,
"processingTimeMs" : 0 ,
"query" : " phil "
} Si vous souhaitez activer le filtrage, vous devez ajouter vos attributs au paramètre d'index filterableAttributes .
let filterable_attributes = [
"id" ,
"genres" ,
] ;
client . index ( "movies_4" ) . set_filterable_attributes ( & filterable_attributes ) . await . unwrap ( ) ;Vous n'avez besoin d'effectuer cette opération qu'une seule fois.
Notez que MeiliSearch reconstrède votre index chaque fois que vous mettez à jour filterableAttributes . Selon la taille de votre ensemble de données, cela pourrait prendre du temps. Vous pouvez suivre le processus à l'aide des tâches.
Ensuite, vous pouvez effectuer la recherche:
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 ) ;Sortie JSON:
{
"hits" : [
{
"id" : 2 ,
"title" : " Wonder Woman " ,
"genres" : [ " Action " , " Adventure " ]
}
],
"offset" : 0 ,
"limit" : 20 ,
"estimatedTotalHits" : 1 ,
"processingTimeMs" : 0 ,
"query" : " wonder "
}HttpClient Par défaut, le SDK utilise reqwest pour passer des appels HTTP. Le SDK vous permet de personnaliser le client HTTP en implémentant vous-même le trait HttpClient et en initialisant le Client avec la méthode new_with_client . Vous pouvez être intéressé par la fonctionnalité futures-unsend qui vous permet de spécifier un client HTTP non-end.
Le SDK prend en charge WasM via reqwest. Vous devrez cependant activer la fonctionnalité futures-unsend lors de l'importation.
Cette caisse soutient entièrement WASM.
La seule différence entre le WASM et la version native est que la version native a une variante de plus ( Error::Http ) dans l'énumération d'erreur. Cela ne devrait pas avoir autant d'importance, mais nous pourrions également ajouter cette variante dans Wasm.
Cependant, la fabrication d'un programme destiné à s'exécuter dans un navigateur Web nécessite une conception très différente de celle d'un programme CLI. Pour voir un exemple d'une application Web de rouille simple utilisant Meilisearch, consultez la démo.
AVERTISSEMENT: meilisearch-sdk paniquera si aucune fenêtre n'est disponible (ex: extension Web).
Ce package garantit une compatibilité avec la version v1.x de Meilisearch, mais certaines fonctionnalités peuvent ne pas être présentes. Veuillez vérifier les problèmes pour plus d'informations.
Toute nouvelle contribution est plus que bienvenue dans ce projet!
Si vous voulez en savoir plus sur le flux de travail de développement ou si vous souhaitez contribuer, veuillez visiter nos directives contributives pour des instructions détaillées!
Meilisearch fournit et maintient de nombreux SDK et outils d'intégration comme celui-ci. Nous voulons offrir à chacun une expérience de recherche incroyable pour tout type de projet . Si vous souhaitez contribuer, faire des suggestions ou simplement savoir ce qui se passe en ce moment, visitez-nous dans le référentiel d'intégration-guides.