| Crates.io | algolia-recommend-rs |
| lib.rs | algolia-recommend-rs |
| version | 0.0.5 |
| created_at | 2025-10-05 10:20:55.29915+00 |
| updated_at | 2025-10-07 08:31:00.751685+00 |
| description | Async Rust client for Algolia Recommend API (unofficial) |
| homepage | https://github.com/raed667/algolia-recommend-rs |
| repository | https://github.com/raed667/algolia-recommend-rs |
| max_upload_size | |
| id | 1868867 |
| size | 70,404 |
algolia-recommend-rs is an unofficial Rust Client for Algolia Recommend
docs.rs/algolia-recommend-rs
$ cargo add algolia-recommend-rs
use algolia_recommend_rs::{RecommendClient, models::{RecommendRequest, Model, TrendingFacetsRequest}};
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct Product {
title: Option<String>,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = RecommendClient::new("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");
// Build recommendation requests
let requests = vec![
RecommendRequest {
index_name: "products".to_string(),
model: Model::BoughtTogether,
object_id: Some("example-object-id".to_string()),
threshold: Some(0),
max_recommendations: None,
facet_name: None,
query_parameters: None,
},
RecommendRequest {
index_name: "products".to_string(),
model: Model::TrendingItems,
object_id: None,
threshold: Some(0),
max_recommendations: None,
facet_name: None,
query_parameters: None,
},
];
// Fetch recommendations
let recs = client.get_recommendations::<Product>(requests).await?;
println!("results: {}", recs.results.len());
for result in recs.results.iter() {
for hit in result.hits.iter() {
println!("objectID={} score={:?} payload={:?}", hit.object_id, hit.score, hit.payload);
}
}
// Fetch trending facets
let trending = client
.get_trending_facets(vec![TrendingFacetsRequest::new("products", "category")])
.await?;
println!("trending results: {}", trending.results.len());
Ok(())
}