mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-12-22 20:50:04 +01:00
Make clippy happy
This commit is contained in:
parent
2b1f6a7f11
commit
1b78231e18
@ -55,7 +55,7 @@ fn bench_formatting(c: &mut criterion::Criterion) {
|
||||
group.bench_function(conf.name, |b| {
|
||||
b.iter(|| {
|
||||
let mut matcher = conf.matching_words.build(conf.text);
|
||||
matcher.format(option.clone());
|
||||
matcher.format(*option);
|
||||
})
|
||||
});
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ fn setup_dir(path: impl AsRef<Path>) {
|
||||
|
||||
fn setup_index() -> Index {
|
||||
let path = "benches.mmdb";
|
||||
setup_dir(&path);
|
||||
setup_dir(path);
|
||||
let mut options = EnvOpenOptions::new();
|
||||
options.map_size(100 * 1024 * 1024 * 1024); // 100 GB
|
||||
options.max_readers(10);
|
||||
@ -62,7 +62,7 @@ fn setup_settings<'t>(
|
||||
builder.execute(|_| (), || false).unwrap();
|
||||
}
|
||||
|
||||
fn setup_index_with_settings<'t>(
|
||||
fn setup_index_with_settings(
|
||||
primary_key: &str,
|
||||
searchable_fields: &[&str],
|
||||
filterable_fields: &[&str],
|
||||
@ -121,7 +121,7 @@ fn indexing_songs_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -166,7 +166,7 @@ fn reindexing_songs_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -232,7 +232,7 @@ fn deleting_songs_in_batches_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -295,7 +295,7 @@ fn indexing_songs_in_three_batches_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -377,7 +377,7 @@ fn indexing_songs_without_faceted_numbers(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -422,7 +422,7 @@ fn indexing_songs_without_faceted_fields(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -466,7 +466,7 @@ fn indexing_wiki(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -511,7 +511,7 @@ fn reindexing_wiki(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -578,7 +578,7 @@ fn deleting_wiki_in_batches_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -641,7 +641,7 @@ fn indexing_wiki_in_three_batches(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -732,7 +732,7 @@ fn indexing_movies_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -776,7 +776,7 @@ fn reindexing_movies_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -841,7 +841,7 @@ fn deleting_movies_in_batches_default(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -903,7 +903,7 @@ fn indexing_movies_in_three_batches(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -1011,7 +1011,7 @@ fn indexing_nested_movies_default(c: &mut Criterion) {
|
||||
let sortable_fields = ["popularity", "runtime", "vote_average", "release_date"];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -1078,7 +1078,7 @@ fn deleting_nested_movies_in_batches_default(c: &mut Criterion) {
|
||||
let sortable_fields = ["popularity", "runtime", "vote_average", "release_date"];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -1148,7 +1148,7 @@ fn indexing_nested_movies_without_faceted_fields(c: &mut Criterion) {
|
||||
let sortable_fields = [];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -1192,7 +1192,7 @@ fn indexing_geo(c: &mut Criterion) {
|
||||
let sortable_fields = ["_geo", "population", "elevation"];
|
||||
|
||||
setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -1237,7 +1237,7 @@ fn reindexing_geo(c: &mut Criterion) {
|
||||
let sortable_fields = ["_geo", "population", "elevation"];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
@ -1304,7 +1304,7 @@ fn deleting_geo_in_batches_default(c: &mut Criterion) {
|
||||
let sortable_fields = ["_geo", "population", "elevation"];
|
||||
|
||||
let index = setup_index_with_settings(
|
||||
&primary_key,
|
||||
primary_key,
|
||||
&searchable_fields,
|
||||
&filterable_fields,
|
||||
&sortable_fields,
|
||||
|
@ -56,12 +56,12 @@ impl Conf<'_> {
|
||||
}
|
||||
|
||||
pub fn base_setup(conf: &Conf) -> Index {
|
||||
match remove_dir_all(&conf.database_name) {
|
||||
match remove_dir_all(conf.database_name) {
|
||||
Ok(_) => (),
|
||||
Err(e) if e.kind() == std::io::ErrorKind::NotFound => (),
|
||||
Err(e) => panic!("{}", e),
|
||||
}
|
||||
create_dir_all(&conf.database_name).unwrap();
|
||||
create_dir_all(conf.database_name).unwrap();
|
||||
|
||||
let mut options = EnvOpenOptions::new();
|
||||
options.map_size(100 * 1024 * 1024 * 1024); // 100 GB
|
||||
@ -142,7 +142,7 @@ pub fn run_benches(c: &mut criterion::Criterion, confs: &[Conf]) {
|
||||
|
||||
pub fn documents_from(filename: &str, filetype: &str) -> DocumentsBatchReader<impl BufRead + Seek> {
|
||||
let reader =
|
||||
File::open(filename).expect(&format!("could not find the dataset in: {}", filename));
|
||||
File::open(filename).unwrap_or_else(|_| panic!("could not find the dataset in: {}", filename));
|
||||
let reader = BufReader::new(reader);
|
||||
let documents = match filetype {
|
||||
"csv" => documents_from_csv(reader).unwrap(),
|
||||
|
@ -398,7 +398,7 @@ pub mod tests {
|
||||
/// Create a raw [Token]. You must specify the string that appear BEFORE your element followed by your element
|
||||
pub fn rtok<'a>(before: &'a str, value: &'a str) -> Token<'a> {
|
||||
// if the string is empty we still need to return 1 for the line number
|
||||
let lines = before.is_empty().then(|| 1).unwrap_or_else(|| before.lines().count());
|
||||
let lines = before.is_empty().then_some(1).unwrap_or_else(|| before.lines().count());
|
||||
let offset = before.chars().count();
|
||||
// the extra field is not checked in the tests so we can set it to nothing
|
||||
unsafe { Span::new_from_raw_offset(offset, lines as u32, value, "") }.into()
|
||||
|
@ -1297,7 +1297,7 @@ pub(crate) mod tests {
|
||||
pub fn delete_document(&self, external_document_id: &str) {
|
||||
let mut wtxn = self.write_txn().unwrap();
|
||||
|
||||
let mut delete = DeleteDocuments::new(&mut wtxn, &self).unwrap();
|
||||
let mut delete = DeleteDocuments::new(&mut wtxn, self).unwrap();
|
||||
delete.strategy(self.index_documents_config.deletion_strategy);
|
||||
|
||||
delete.delete_external_id(external_document_id);
|
||||
|
@ -964,7 +964,7 @@ pub mod test {
|
||||
let mut docid_words = HashMap::new();
|
||||
for (word, docids) in word_docids.iter() {
|
||||
for docid in docids {
|
||||
let words = docid_words.entry(docid).or_insert(vec![]);
|
||||
let words: &mut Vec<_> = docid_words.entry(docid).or_default();
|
||||
words.push(word.clone());
|
||||
}
|
||||
}
|
||||
@ -996,9 +996,8 @@ pub mod test {
|
||||
} else {
|
||||
(s(lword), s(rword), (lposition - rposition + 1) as i32)
|
||||
};
|
||||
let docids = word_pair_proximity_docids
|
||||
.entry(key)
|
||||
.or_insert(RoaringBitmap::new());
|
||||
let docids: &mut RoaringBitmap =
|
||||
word_pair_proximity_docids.entry(key).or_default();
|
||||
docids.push(candidate);
|
||||
}
|
||||
}
|
||||
@ -1015,15 +1014,13 @@ pub mod test {
|
||||
docid_words.iter().position(|w| w.starts_with(pword)).unwrap();
|
||||
if lposition < rposition {
|
||||
let key = (s(lword), s(pword), (rposition - lposition) as i32);
|
||||
let docids = word_prefix_pair_proximity_docids
|
||||
.entry(key)
|
||||
.or_insert(RoaringBitmap::new());
|
||||
let docids: &mut RoaringBitmap =
|
||||
word_prefix_pair_proximity_docids.entry(key).or_default();
|
||||
docids.push(candidate);
|
||||
} else {
|
||||
let key = (s(lword), s(pword), (lposition - rposition) as i32);
|
||||
let docids = prefix_word_pair_proximity_docids
|
||||
.entry(key)
|
||||
.or_insert(RoaringBitmap::new());
|
||||
let docids: &mut RoaringBitmap =
|
||||
prefix_word_pair_proximity_docids.entry(key).or_default();
|
||||
docids.push(candidate);
|
||||
};
|
||||
}
|
||||
|
@ -426,7 +426,7 @@ mod test {
|
||||
let parent = Initial::<NoopDistinct>::new(
|
||||
&context,
|
||||
query_tree,
|
||||
Some(facet_candidates.clone()),
|
||||
Some(facet_candidates),
|
||||
false,
|
||||
None,
|
||||
);
|
||||
@ -469,7 +469,7 @@ mod test {
|
||||
let parent = Initial::<NoopDistinct>::new(
|
||||
&context,
|
||||
Some(query_tree),
|
||||
Some(facet_candidates.clone()),
|
||||
Some(facet_candidates),
|
||||
false,
|
||||
None,
|
||||
);
|
||||
|
@ -113,7 +113,7 @@ mod test {
|
||||
let fid = fields_map.id(distinct).unwrap();
|
||||
|
||||
let documents = DocumentsBatchReader::from_reader(Cursor::new(JSON.as_slice())).unwrap();
|
||||
let map = (0..documents.documents_count() as u32).collect();
|
||||
let map = (0..documents.documents_count()).collect();
|
||||
|
||||
txn.commit().unwrap();
|
||||
|
||||
|
@ -177,11 +177,10 @@ mod tests {
|
||||
|facet, count, _| {
|
||||
let facet = OrderedF64Codec::bytes_decode(facet).unwrap();
|
||||
if nbr_facets == 100 {
|
||||
return Ok(ControlFlow::Break(()));
|
||||
Ok(ControlFlow::Break(()))
|
||||
} else {
|
||||
nbr_facets += 1;
|
||||
results.push_str(&format!("{facet}: {count}\n"));
|
||||
|
||||
Ok(ControlFlow::Continue(()))
|
||||
}
|
||||
},
|
||||
|
@ -198,118 +198,94 @@ macro_rules! db_snap {
|
||||
}
|
||||
|
||||
pub fn snap_word_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, word_docids, |(s, b)| {
|
||||
make_db_snap_from_iter!(index, word_docids, |(s, b)| {
|
||||
&format!("{s:<16} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_exact_word_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, exact_word_docids, |(s, b)| {
|
||||
make_db_snap_from_iter!(index, exact_word_docids, |(s, b)| {
|
||||
&format!("{s:<16} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_word_prefix_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, word_prefix_docids, |(s, b)| {
|
||||
make_db_snap_from_iter!(index, word_prefix_docids, |(s, b)| {
|
||||
&format!("{s:<16} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_exact_word_prefix_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, exact_word_prefix_docids, |(s, b)| {
|
||||
make_db_snap_from_iter!(index, exact_word_prefix_docids, |(s, b)| {
|
||||
&format!("{s:<16} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_docid_word_positions(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, docid_word_positions, |((idx, s), b)| {
|
||||
make_db_snap_from_iter!(index, docid_word_positions, |((idx, s), b)| {
|
||||
&format!("{idx:<6} {s:<16} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_word_pair_proximity_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, word_pair_proximity_docids, |(
|
||||
(proximity, word1, word2),
|
||||
b,
|
||||
)| {
|
||||
make_db_snap_from_iter!(index, word_pair_proximity_docids, |((proximity, word1, word2), b)| {
|
||||
&format!("{proximity:<2} {word1:<16} {word2:<16} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_word_prefix_pair_proximity_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, word_prefix_pair_proximity_docids, |(
|
||||
make_db_snap_from_iter!(index, word_prefix_pair_proximity_docids, |(
|
||||
(proximity, word1, prefix),
|
||||
b,
|
||||
)| {
|
||||
&format!("{proximity:<2} {word1:<16} {prefix:<4} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_prefix_word_pair_proximity_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, prefix_word_pair_proximity_docids, |(
|
||||
make_db_snap_from_iter!(index, prefix_word_pair_proximity_docids, |(
|
||||
(proximity, prefix, word2),
|
||||
b,
|
||||
)| {
|
||||
&format!("{proximity:<2} {prefix:<4} {word2:<16} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_word_position_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, word_position_docids, |((word, position), b)| {
|
||||
make_db_snap_from_iter!(index, word_position_docids, |((word, position), b)| {
|
||||
&format!("{word:<16} {position:<6} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_field_id_word_count_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, field_id_word_count_docids, |(
|
||||
(field_id, word_count),
|
||||
b,
|
||||
)| {
|
||||
make_db_snap_from_iter!(index, field_id_word_count_docids, |((field_id, word_count), b)| {
|
||||
&format!("{field_id:<3} {word_count:<6} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_word_prefix_position_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, word_prefix_position_docids, |(
|
||||
(word_prefix, position),
|
||||
b,
|
||||
)| {
|
||||
make_db_snap_from_iter!(index, word_prefix_position_docids, |((word_prefix, position), b)| {
|
||||
&format!("{word_prefix:<4} {position:<6} {}", display_bitmap(&b))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_facet_id_f64_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, facet_id_f64_docids, |(
|
||||
make_db_snap_from_iter!(index, facet_id_f64_docids, |(
|
||||
FacetGroupKey { field_id, level, left_bound },
|
||||
FacetGroupValue { size, bitmap },
|
||||
)| {
|
||||
&format!("{field_id:<3} {level:<2} {left_bound:<6} {size:<2} {}", display_bitmap(&bitmap))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_facet_id_exists_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, facet_id_exists_docids, |(facet_id, docids)| {
|
||||
make_db_snap_from_iter!(index, facet_id_exists_docids, |(facet_id, docids)| {
|
||||
&format!("{facet_id:<3} {}", display_bitmap(&docids))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_facet_id_string_docids(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, facet_id_string_docids, |(
|
||||
make_db_snap_from_iter!(index, facet_id_string_docids, |(
|
||||
FacetGroupKey { field_id, level, left_bound },
|
||||
FacetGroupValue { size, bitmap },
|
||||
)| {
|
||||
&format!("{field_id:<3} {level:<2} {left_bound:<12} {size:<2} {}", display_bitmap(&bitmap))
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_field_id_docid_facet_strings(index: &Index) -> String {
|
||||
let snap = make_db_snap_from_iter!(index, field_id_docid_facet_strings, |(
|
||||
make_db_snap_from_iter!(index, field_id_docid_facet_strings, |(
|
||||
(field_id, doc_id, string),
|
||||
other_string,
|
||||
)| {
|
||||
&format!("{field_id:<3} {doc_id:<4} {string:<12} {other_string}")
|
||||
});
|
||||
snap
|
||||
})
|
||||
}
|
||||
pub fn snap_documents_ids(index: &Index) -> String {
|
||||
let rtxn = index.read_txn().unwrap();
|
||||
@ -541,7 +517,8 @@ pub fn convert_snap_to_hash_if_needed<'snap>(
|
||||
snap: &'snap str,
|
||||
inline: bool,
|
||||
) -> Vec<(String, Cow<'snap, str>)> {
|
||||
let store_whole_snapshot = std::env::var("MILLI_TEST_FULL_SNAPS").unwrap_or("false".to_owned());
|
||||
let store_whole_snapshot =
|
||||
std::env::var("MILLI_TEST_FULL_SNAPS").unwrap_or_else(|_| "false".to_owned());
|
||||
let store_whole_snapshot: bool = store_whole_snapshot.parse().unwrap();
|
||||
|
||||
let max_len = if inline { 256 } else { 2048 };
|
||||
|
@ -659,7 +659,9 @@ mod tests {
|
||||
// Delete some documents.
|
||||
let mut builder = DeleteDocuments::new(wtxn, index).unwrap();
|
||||
builder.strategy(strategy);
|
||||
external_ids.iter().for_each(|id| drop(builder.delete_external_id(id)));
|
||||
external_ids.iter().for_each(|id| {
|
||||
builder.delete_external_id(id);
|
||||
});
|
||||
builder.execute().unwrap();
|
||||
|
||||
ids_to_delete
|
||||
|
@ -882,6 +882,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[allow(clippy::needless_range_loop)]
|
||||
fn delete_shuffled() {
|
||||
let index = FacetIndex::<OrderedF64Codec>::new(4, 8, 5);
|
||||
let mut txn = index.env.write_txn().unwrap();
|
||||
|
@ -254,7 +254,7 @@ pub(crate) mod test_helpers {
|
||||
max_group_size: u8,
|
||||
min_level_size: u8,
|
||||
) -> FacetIndex<BoundCodec> {
|
||||
let group_size = std::cmp::min(127, std::cmp::max(group_size, 2)); // 2 <= x <= 127
|
||||
let group_size = group_size.clamp(2, 127);
|
||||
let max_group_size = std::cmp::min(127, std::cmp::max(group_size * 2, max_group_size)); // 2*group_size <= x <= 127
|
||||
let min_level_size = std::cmp::max(1, min_level_size); // 1 <= x <= inf
|
||||
let mut options = heed::EnvOpenOptions::new();
|
||||
@ -307,7 +307,7 @@ pub(crate) mod test_helpers {
|
||||
min_level_size: self.min_level_size.get(),
|
||||
max_group_size: self.max_group_size.get(),
|
||||
};
|
||||
let key_bytes = BoundCodec::bytes_encode(&key).unwrap();
|
||||
let key_bytes = BoundCodec::bytes_encode(key).unwrap();
|
||||
update.insert(wtxn, field_id, &key_bytes, docids).unwrap();
|
||||
}
|
||||
pub fn delete_single_docid<'a>(
|
||||
@ -333,7 +333,7 @@ pub(crate) mod test_helpers {
|
||||
min_level_size: self.min_level_size.get(),
|
||||
max_group_size: self.max_group_size.get(),
|
||||
};
|
||||
let key_bytes = BoundCodec::bytes_encode(&key).unwrap();
|
||||
let key_bytes = BoundCodec::bytes_encode(key).unwrap();
|
||||
update.delete(wtxn, field_id, &key_bytes, docids).unwrap();
|
||||
}
|
||||
|
||||
@ -354,7 +354,7 @@ pub(crate) mod test_helpers {
|
||||
let key: FacetGroupKey<&[u8]> =
|
||||
FacetGroupKey { field_id: *field_id, level: 0, left_bound: &left_bound_bytes };
|
||||
let key = FacetGroupKeyCodec::<ByteSliceRefCodec>::bytes_encode(&key).unwrap();
|
||||
let value = CboRoaringBitmapCodec::bytes_encode(&docids).unwrap();
|
||||
let value = CboRoaringBitmapCodec::bytes_encode(docids).unwrap();
|
||||
writer.insert(&key, &value).unwrap();
|
||||
}
|
||||
writer.finish().unwrap();
|
||||
@ -381,19 +381,19 @@ pub(crate) mod test_helpers {
|
||||
level_no_prefix.extend_from_slice(&field_id.to_be_bytes());
|
||||
level_no_prefix.push(level_no);
|
||||
|
||||
let mut iter = self
|
||||
let iter = self
|
||||
.content
|
||||
.as_polymorph()
|
||||
.prefix_iter::<_, ByteSlice, FacetGroupValueCodec>(txn, &level_no_prefix)
|
||||
.unwrap();
|
||||
while let Some(el) = iter.next() {
|
||||
for el in iter {
|
||||
let (key, value) = el.unwrap();
|
||||
let key = FacetGroupKeyCodec::<ByteSliceRefCodec>::bytes_decode(&key).unwrap();
|
||||
let key = FacetGroupKeyCodec::<ByteSliceRefCodec>::bytes_decode(key).unwrap();
|
||||
|
||||
let mut prefix_start_below = vec![];
|
||||
prefix_start_below.extend_from_slice(&field_id.to_be_bytes());
|
||||
prefix_start_below.push(level_no - 1);
|
||||
prefix_start_below.extend_from_slice(&key.left_bound);
|
||||
prefix_start_below.extend_from_slice(key.left_bound);
|
||||
|
||||
let start_below = {
|
||||
let mut start_below_iter = self
|
||||
@ -405,19 +405,19 @@ pub(crate) mod test_helpers {
|
||||
)
|
||||
.unwrap();
|
||||
let (key_bytes, _) = start_below_iter.next().unwrap().unwrap();
|
||||
FacetGroupKeyCodec::<ByteSliceRefCodec>::bytes_decode(&key_bytes).unwrap()
|
||||
FacetGroupKeyCodec::<ByteSliceRefCodec>::bytes_decode(key_bytes).unwrap()
|
||||
};
|
||||
|
||||
assert!(value.size > 0);
|
||||
|
||||
let mut actual_size = 0;
|
||||
let mut values_below = RoaringBitmap::new();
|
||||
let mut iter_below = self
|
||||
let iter_below = self
|
||||
.content
|
||||
.range(txn, &(start_below..))
|
||||
.unwrap()
|
||||
.take(value.size as usize);
|
||||
while let Some(el) = iter_below.next() {
|
||||
for el in iter_below {
|
||||
let (_, value) = el.unwrap();
|
||||
actual_size += 1;
|
||||
values_below |= value.bitmap;
|
||||
@ -438,8 +438,8 @@ pub(crate) mod test_helpers {
|
||||
{
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
let txn = self.env.read_txn().unwrap();
|
||||
let mut iter = self.content.iter(&txn).unwrap();
|
||||
while let Some(el) = iter.next() {
|
||||
let iter = self.content.iter(&txn).unwrap();
|
||||
for el in iter {
|
||||
let (key, value) = el.unwrap();
|
||||
let FacetGroupKey { field_id, level, left_bound: bound } = key;
|
||||
let bound = BoundCodec::bytes_decode(bound).unwrap();
|
||||
|
@ -1126,14 +1126,14 @@ mod tests {
|
||||
}))
|
||||
.unwrap();
|
||||
|
||||
let mut rtxn = index.read_txn().unwrap();
|
||||
let rtxn = index.read_txn().unwrap();
|
||||
|
||||
assert!(index.word_docids.get(&mut rtxn, "0").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&mut rtxn, "64").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&mut rtxn, "256").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&mut rtxn, "1024").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&mut rtxn, "32768").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&mut rtxn, "65535").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&rtxn, "0").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&rtxn, "64").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&rtxn, "256").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&rtxn, "1024").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&rtxn, "32768").unwrap().is_some());
|
||||
assert!(index.word_docids.get(&rtxn, "65535").unwrap().is_some());
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1539,7 +1539,9 @@ mod tests {
|
||||
|
||||
let mut wtxn = index.write_txn().unwrap();
|
||||
let mut builder = DeleteDocuments::new(&mut wtxn, &index).unwrap();
|
||||
(0..5).for_each(|id| drop(builder.delete_external_id(&id.to_string())));
|
||||
(0..5).for_each(|id| {
|
||||
builder.delete_external_id(&id.to_string());
|
||||
});
|
||||
builder.execute().unwrap();
|
||||
|
||||
index
|
||||
|
@ -87,8 +87,8 @@ pub fn setup_search_index_with_criteria(criteria: &[Criterion]) -> Index {
|
||||
}
|
||||
|
||||
pub fn internal_to_external_ids(index: &Index, internal_ids: &[DocumentId]) -> Vec<String> {
|
||||
let mut rtxn = index.read_txn().unwrap();
|
||||
let docid_map = index.external_documents_ids(&mut rtxn).unwrap();
|
||||
let rtxn = index.read_txn().unwrap();
|
||||
let docid_map = index.external_documents_ids(&rtxn).unwrap();
|
||||
let docid_map: std::collections::HashMap<_, _> =
|
||||
EXTERNAL_DOCUMENTS_IDS.iter().map(|id| (docid_map.get(id).unwrap(), id)).collect();
|
||||
internal_ids.iter().map(|id| docid_map.get(id).unwrap().to_string()).collect()
|
||||
@ -170,18 +170,16 @@ pub fn expected_order(
|
||||
fn execute_filter(filter: &str, document: &TestDocument) -> Option<String> {
|
||||
let mut id = None;
|
||||
if let Some((field, filter)) = filter.split_once("!=") {
|
||||
if field == "tag" && document.tag != filter {
|
||||
id = Some(document.id.clone())
|
||||
} else if field == "asc_desc_rank"
|
||||
&& Ok(&document.asc_desc_rank) != filter.parse::<u32>().as_ref()
|
||||
if field == "tag" && document.tag != filter
|
||||
|| (field == "asc_desc_rank"
|
||||
&& Ok(&document.asc_desc_rank) != filter.parse::<u32>().as_ref())
|
||||
{
|
||||
id = Some(document.id.clone())
|
||||
}
|
||||
} else if let Some((field, filter)) = filter.split_once('=') {
|
||||
if field == "tag" && document.tag == filter {
|
||||
id = Some(document.id.clone())
|
||||
} else if field == "asc_desc_rank"
|
||||
&& document.asc_desc_rank == filter.parse::<u32>().unwrap()
|
||||
if field == "tag" && document.tag == filter
|
||||
|| (field == "asc_desc_rank"
|
||||
&& document.asc_desc_rank == filter.parse::<u32>().unwrap())
|
||||
{
|
||||
id = Some(document.id.clone())
|
||||
}
|
||||
|
@ -7,15 +7,15 @@ fn set_stop_words(index: &Index, stop_words: &[&str]) {
|
||||
let mut wtxn = index.write_txn().unwrap();
|
||||
let config = IndexerConfig::default();
|
||||
|
||||
let mut builder = Settings::new(&mut wtxn, &index, &config);
|
||||
let stop_words = stop_words.into_iter().map(|s| s.to_string()).collect();
|
||||
let mut builder = Settings::new(&mut wtxn, index, &config);
|
||||
let stop_words = stop_words.iter().map(|s| s.to_string()).collect();
|
||||
builder.set_stop_words(stop_words);
|
||||
builder.execute(|_| (), || false).unwrap();
|
||||
wtxn.commit().unwrap();
|
||||
}
|
||||
|
||||
fn test_phrase_search_with_stop_words_given_criteria(criteria: &[Criterion]) {
|
||||
let index = super::setup_search_index_with_criteria(&criteria);
|
||||
let index = super::setup_search_index_with_criteria(criteria);
|
||||
|
||||
// Add stop_words
|
||||
set_stop_words(&index, &["a", "an", "the", "of"]);
|
||||
|
@ -348,9 +348,9 @@ fn criteria_mixup() {
|
||||
builder.execute(|_| (), || false).unwrap();
|
||||
wtxn.commit().unwrap();
|
||||
|
||||
let mut rtxn = index.read_txn().unwrap();
|
||||
let rtxn = index.read_txn().unwrap();
|
||||
|
||||
let mut search = Search::new(&mut rtxn, &index);
|
||||
let mut search = Search::new(&rtxn, &index);
|
||||
search.query(search::TEST_QUERY);
|
||||
search.limit(EXTERNAL_DOCUMENTS_IDS.len());
|
||||
search.terms_matching_strategy(ALLOW_OPTIONAL_WORDS);
|
||||
@ -440,9 +440,9 @@ fn criteria_ascdesc() {
|
||||
builder.execute(|_| (), || false).unwrap();
|
||||
wtxn.commit().unwrap();
|
||||
|
||||
let mut rtxn = index.read_txn().unwrap();
|
||||
let rtxn = index.read_txn().unwrap();
|
||||
|
||||
let mut search = Search::new(&mut rtxn, &index);
|
||||
let mut search = Search::new(&rtxn, &index);
|
||||
search.limit(ASC_DESC_CANDIDATES_THRESHOLD + 1);
|
||||
|
||||
let SearchResult { documents_ids, .. } = search.execute().unwrap();
|
||||
|
@ -72,9 +72,9 @@ pub fn map_leaf_values<'a>(
|
||||
map_leaf_values_in_object(value, &selectors, "", &mut mapper);
|
||||
}
|
||||
|
||||
pub fn map_leaf_values_in_object<'a>(
|
||||
pub fn map_leaf_values_in_object(
|
||||
value: &mut Map<String, Value>,
|
||||
selectors: &[&'a str],
|
||||
selectors: &[&str],
|
||||
base_key: &str,
|
||||
mapper: &mut impl FnMut(&str, &mut Value),
|
||||
) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user