mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-03 20:07:09 +02:00
feat: Introduce the Criterion trait
This commit is contained in:
parent
c56c35b45b
commit
8cd07462aa
11 changed files with 209 additions and 218 deletions
|
@ -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) };
|
||||
|
|
|
@ -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) };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue