use a3s_search::{
engines::{DuckDuckGo, Wikipedia},
Search, SearchQuery,
};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
tracing_subscriber::fmt::init();
let mut search = Search::new();
search.add_engine(DuckDuckGo::new());
search.add_engine(Wikipedia::new());
println!("Configured {} search engines", search.engine_count());
let query = SearchQuery::new("rust programming language");
println!("Searching for: {}", query.query);
println!();
let results = search.search(query).await?;
println!(
"Found {} results in {}ms",
results.count, results.duration_ms
);
println!();
for (i, result) in results.items().iter().take(10).enumerate() {
println!("{}. {}", i + 1, result.title);
println!(" URL: {}", result.url);
println!(" Engines: {:?}", result.engines);
println!(" Score: {:.2}", result.score);
if !result.content.is_empty() {
let snippet = if result.content.len() > 100 {
format!("{}...", &result.content[..100])
} else {
result.content.clone()
};
println!(" {}", snippet);
}
println!();
}
Ok(())
}