fix the facets conditions

This commit is contained in:
tamo 2021-04-14 16:26:21 +02:00 committed by Tamo
parent 7c7fba4e57
commit e5dfde88fd
No known key found for this signature in database
GPG Key ID: 20CD8020AFA88D69
3 changed files with 28 additions and 8 deletions

View File

@ -138,6 +138,7 @@ fn bench_songs(c: &mut criterion::Criterion) {
criterion: Some(&["desc(released-timestamp)"]), criterion: Some(&["desc(released-timestamp)"]),
..BASE_CONF ..BASE_CONF
}, },
/* then we bench the asc and desc criterion on top of the default criterion */ /* then we bench the asc and desc criterion on top of the default criterion */
utils::Conf { utils::Conf {
group_name: "asc + default", group_name: "asc + default",
@ -149,6 +150,24 @@ fn bench_songs(c: &mut criterion::Criterion) {
criterion: Some(&desc_default[..]), criterion: Some(&desc_default[..]),
..BASE_CONF ..BASE_CONF
}, },
/* we bench the filters with the default request */
utils::Conf {
group_name: "basic filter: <=",
facet_condition: Some("released-timestamp <= 946728000"), // year 2000
..BASE_CONF
},
utils::Conf {
group_name: "basic filter: TO",
facet_condition: Some("released-timestamp 946728000 TO 1262347200"), // year 2000 to 2010
..BASE_CONF
},
utils::Conf {
group_name: "big filter",
facet_condition: Some("released-timestamp != 1262347200 AND (NOT (released-timestamp = 946728000)) AND (duration-float = 1 OR (duration-float 1.1 TO 1.5 AND released-timestamp > 315576000))"),
..BASE_CONF
},
/* the we bench some global / normal search with all the default criterion in the default /* the we bench some global / normal search with all the default criterion in the default
* order */ * order */
utils::Conf { utils::Conf {
@ -174,7 +193,10 @@ fn bench_songs(c: &mut criterion::Criterion) {
group_name: "prefix search", group_name: "prefix search",
queries: &[ queries: &[
"s", // 500k+ results "s", // 500k+ results
"a", "b", "i", "x", // only 7k results "a", //
"b", //
"i", //
"x", // only 7k results
], ],
..BASE_CONF ..BASE_CONF
}, },

View File

@ -1,7 +1,4 @@
use std::{ use std::fs::{create_dir_all, remove_dir_all, File};
fs::{create_dir_all, remove_dir_all, File},
time::Duration,
};
use criterion::BenchmarkId; use criterion::BenchmarkId;
use heed::EnvOpenOptions; use heed::EnvOpenOptions;
@ -24,7 +21,7 @@ pub struct Conf<'a> {
pub criterion: Option<&'a [&'a str]>, pub criterion: Option<&'a [&'a str]>,
/// the last chance to configure your database as you want /// the last chance to configure your database as you want
pub configure: fn(&mut Settings), pub configure: fn(&mut Settings),
pub facet_condition: Option<FacetCondition>, pub facet_condition: Option<&'a str>,
/// enable or disable the optional words on the query /// enable or disable the optional words on the query
pub optional_words: bool, pub optional_words: bool,
} }
@ -102,7 +99,8 @@ pub fn run_benches(c: &mut criterion::Criterion, confs: &[Conf]) {
let rtxn = index.read_txn().unwrap(); let rtxn = index.read_txn().unwrap();
let mut search = index.search(&rtxn); let mut search = index.search(&rtxn);
search.query(query).optional_words(conf.optional_words); search.query(query).optional_words(conf.optional_words);
if let Some(facet_condition) = conf.facet_condition.clone() { if let Some(facet_condition) = conf.facet_condition {
let facet_condition = FacetCondition::from_str(&rtxn, &index, facet_condition).unwrap();
search.facet_condition(facet_condition); search.facet_condition(facet_condition);
} }
let _ids = search.execute().unwrap(); let _ids = search.execute().unwrap();