
⚡ O cliente da MEILISEARCH API escrito para ferrugem?
Meilisesearch Rust é o cliente da API Meilisearch para desenvolvedores de ferrugem.
O MeiliseSearch é um mecanismo de pesquisa de código aberto. Saiba mais sobre o Meilisearch.
Este ReadMe contém toda a documentação que você precisa para começar a usar este SDK Meilisearch.
Para obter informações gerais sobre como usar o Meilisearch-como nossa referência de API, tutoriais, guias e artigos detalhados-refere-se ao nosso principal site de documentação.
Diga adeus à implantação do servidor e atualizações manuais com a MeiliseSearch Cloud. Comece com uma avaliação gratuita de 14 dias! Não é necessário cartão de crédito.
Para usar meilisearch-sdk , adicione isso à sua Cargo.toml :
[ dependencies ]
meilisearch-sdk = " 0.27.1 "As seguintes dependências opcionais também podem ser úteis:
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 " ] } Esta caixa é async , mas você pode optar por usar um tempo de execução assíncrono como o Tokio ou apenas bloquear o futuro. Você pode ativar o recurso sync para fazer a maioria das estruturas Sync . Pode ser um pouco mais lento.
O uso dessa caixa é possível sem Serde, mas muitos recursos requerem Serde.
Esta caixa exige que um servidor Meilisearch seja executado.
Existem muitas maneiras fáceis de baixar e executar uma instância do Meilisearch.
Por exemplo, usando o comando curl em seu terminal:
# Install Meilisearch
curl -L https://install.meilisearch.com | sh
# Launch Meilisearch
./meilisearch --master-key=masterKeyNB: Você também pode fazer o download do Meilisearch de 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 ( ) ;
} Com o uid , você pode verificar o status ( enqueued , canceled , processing , succeeded ou failed ) de seus documentos, a adição usando a tarefa.
// Meilisearch is typo-tolerant:
println ! ( "{:?}" , client.index ( "movies_2" ) .search ( ) .with_query ( "caorl" ) .execute::< Movie > ( ) . await .unwrap ( ) .hits ) ;Saída:
[Movie { id: 1, title: String::from("Carol"), genres: vec!["Romance", "Drama"] }]
Saída 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 ) ;Saída JSON:
{
"hits" : [
{
"id" : 6 ,
"title" : " Philadelphia " ,
"_formatted" : {
"id" : 6 ,
"title" : " <em>Phil</em>adelphia " ,
"genre" : [ " Drama " ]
}
}
],
"offset" : 0 ,
"limit" : 20 ,
"processingTimeMs" : 0 ,
"query" : " phil "
} Se você deseja ativar a filtragem, adicione seus atributos à configuração do índice filterableAttributes .
let filterable_attributes = [
"id" ,
"genres" ,
] ;
client . index ( "movies_4" ) . set_filterable_attributes ( & filterable_attributes ) . await . unwrap ( ) ;Você só precisa executar esta operação uma vez.
Observe que o MeiliseSearch reconstruirá seu índice sempre que você atualizar filterableAttributes . Dependendo do tamanho do seu conjunto de dados, isso pode levar tempo. Você pode rastrear o processo usando as tarefas.
Então, você pode executar a pesquisa:
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 ) ;Saída JSON:
{
"hits" : [
{
"id" : 2 ,
"title" : " Wonder Woman " ,
"genres" : [ " Action " , " Adventure " ]
}
],
"offset" : 0 ,
"limit" : 20 ,
"estimatedTotalHits" : 1 ,
"processingTimeMs" : 0 ,
"query" : " wonder "
}HttpClient Por padrão, o SDK usa reqwest para fazer chamadas HTTP. O SDK permite personalizar o cliente HTTP implementando você mesmo o traço HttpClient e inicializando o Client com o método new_with_client . Você pode estar interessado no recurso futures-unsend , que permite especificar um cliente HTTP não se desenvolveu.
O SDK suporta o WASM através do Reqwest. Você precisará ativar o recurso futures-unsend enquanto o importa.
Esta caixa suporta totalmente o WASM.
A única diferença entre o WASM e a versão nativa é que a versão nativa possui mais uma variante ( Error::Http ) na enumeração de erro. Isso não deve importar muito, mas também poderíamos adicionar essa variante no WASM.
No entanto, fazer um programa destinado a ser executado em um navegador da Web requer um design muito diferente de um programa de CLI. Para ver um exemplo de um simples aplicativo da web de ferrugem usando o Meilisearch, consulte a demonstração nossa.
AVISO: meilisearch-sdk entrará em pânico se nenhuma janela estiver disponível (Ex: Extensão da Web).
Este pacote garante compatibilidade com a versão v1.x do Meilisesearch, mas alguns recursos podem não estar presentes. Por favor, verifique os problemas para obter mais informações.
Qualquer nova contribuição é mais do que bem -vinda neste projeto!
Se você quiser saber mais sobre o fluxo de trabalho de desenvolvimento ou querer contribuir, visite nossas diretrizes contribuintes para obter instruções detalhadas!
O MeiliseSearch fornece e mantém muitas SDKs e ferramentas de integração como esta. Queremos proporcionar a todos uma experiência de pesquisa incrível para qualquer tipo de projeto . Se você deseja contribuir, faça sugestões ou apenas saiba o que está acontecendo agora, visite-nos no repositório de guias de integração.