2018-05-27 15:23:43 +02:00
|
|
|
extern crate env_logger;
|
|
|
|
extern crate fst;
|
|
|
|
extern crate raptor;
|
|
|
|
|
2018-06-24 15:36:24 +02:00
|
|
|
use std::env;
|
2018-05-27 15:23:43 +02:00
|
|
|
use fst::Streamer;
|
2018-06-24 15:36:24 +02:00
|
|
|
use raptor::{load_map, RankedStream, LevBuilder};
|
2018-05-27 15:23:43 +02:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
drop(env_logger::init());
|
|
|
|
|
|
|
|
let lev_builder = LevBuilder::new();
|
2018-06-24 15:10:13 +02:00
|
|
|
let map = load_map("map.fst", "values.vecs").unwrap();
|
2018-05-27 15:23:43 +02:00
|
|
|
|
|
|
|
let query = env::args().nth(1).expect("Please enter query words!");
|
|
|
|
let query = query.to_lowercase();
|
|
|
|
|
|
|
|
println!("Searching for: {:?}", query);
|
|
|
|
|
|
|
|
let mut automatons = Vec::new();
|
|
|
|
for query in query.split_whitespace() {
|
|
|
|
let lev = lev_builder.build_automaton(query);
|
|
|
|
automatons.push(lev);
|
|
|
|
}
|
|
|
|
|
2018-06-24 15:36:24 +02:00
|
|
|
let limit: Option<usize> = env::var("RAPTOR_OUTPUT_LIMIT").ok().and_then(|x| x.parse().ok());
|
|
|
|
let mut stream = RankedStream::new(&map, map.values(), automatons, limit.unwrap_or(20));
|
2018-05-27 15:23:43 +02:00
|
|
|
while let Some(document_id) = stream.next() {
|
|
|
|
println!("{:?}", document_id);
|
|
|
|
}
|
|
|
|
}
|