use meilisearch_sdk::client::Client;
use meilisearch_sdk::search::SearchResults;
use serde::{Deserialize, Serialize};
use std::env;
#[derive(Serialize, Deserialize, Debug)]
struct Movie {
id: i32,
title: String,
genres: Vec<String>,
year: i32,
}
#[tokio::main]
async fn main() {
let client = Client::new(
env::var("MEILISEARCH_URL").unwrap(),
Some(env::var("MEILISEARCH_API_KEY").unwrap())
).unwrap();
// Add documents
let movies = vec![
Movie { id: 1, title: "The Matrix".to_string(), genres: vec!["Action".to_string(), "Sci-Fi".to_string()], year: 1999 },
Movie { id: 2, title: "Inception".to_string(), genres: vec!["Action".to_string(), "Thriller".to_string()], year: 2010 },
Movie { id: 3, title: "Interstellar".to_string(), genres: vec!["Drama".to_string(), "Sci-Fi".to_string()], year: 2014 },
];
let task = client.index("movies").add_documents(&movies, Some("id")).await.unwrap();
task.wait_for_completion(&client, None, None).await.unwrap();
// Search
let results: SearchResults<Movie> = client
.index("movies")
.search()
.with_query("inter")
.execute()
.await
.unwrap();
println!("{:?}", results.hits);
}