feat: Introduce the Criterion trait

This commit is contained in:
Clément Renault 2018-10-11 14:04:41 +02:00
parent c56c35b45b
commit 8cd07462aa
11 changed files with 209 additions and 218 deletions

View file

@ -3,11 +3,10 @@ use std::io::{self, Write};
use structopt::StructOpt;
use std::path::PathBuf;
use fst::Streamer;
use elapsed::measure_time;
use rocksdb::{DB, DBOptions, IngestExternalFileOptions};
use raptor::{automaton, Metadata, CommonWords};
use raptor::rank;
use raptor::rank::{criterion, RankedStreamBuilder};
#[derive(Debug, StructOpt)]
pub struct CommandConsole {
@ -70,15 +69,13 @@ fn search(metadata: &Metadata, database: &DB, common_words: &CommonWords, query:
automatons.push(lev);
}
let config = rank::Config {
criteria: rank::criterion::default(),
metadata: &metadata,
automatons: automatons,
limit: 20,
};
let mut builder = RankedStreamBuilder::new(metadata, automatons);
builder.criteria(criterion::default());
let mut stream = rank::RankedStream::new(config);
while let Some(document) = stream.next() {
let mut stream = builder.build();
let documents = stream.retrieve_documents(20);
for document in documents {
let id_key = format!("{}-id", document.id);
let id = database.get(id_key.as_bytes()).unwrap().unwrap();
let id = unsafe { from_utf8_unchecked(&id) };

View file

@ -7,10 +7,9 @@ use std::path::PathBuf;
use std::error::Error;
use std::sync::Arc;
use raptor::rank;
use raptor::rank::{criterion, RankedStreamBuilder};
use raptor::{automaton, Metadata, CommonWords};
use rocksdb::{DB, DBOptions, IngestExternalFileOptions};
use fst::Streamer;
use warp::Filter;
use structopt::StructOpt;
@ -100,19 +99,17 @@ where M: AsRef<Metadata>,
automatons.push(lev);
}
let config = rank::Config {
criteria: rank::criterion::default(),
metadata: metadata.as_ref(),
automatons: automatons,
limit: 20,
};
let mut builder = RankedStreamBuilder::new(metadata.as_ref(), automatons);
builder.criteria(criterion::default());
let mut stream = builder.build();
let documents = stream.retrieve_documents(20);
let mut stream = rank::RankedStream::new(config);
let mut body = Vec::new();
write!(&mut body, "[")?;
let mut first = true;
while let Some(document) = stream.next() {
for document in documents {
let title_key = format!("{}-title", document.id);
let title = database.as_ref().get(title_key.as_bytes()).unwrap().unwrap();
let title = unsafe { from_utf8_unchecked(&title) };