mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-27 04:25:06 +08:00
Merge #727
727: Fix bug in filter search r=Kerollmops a=loiclec # Pull Request ## Related issue Fixes (partially, until merged into meilisearch) https://github.com/meilisearch/meilisearch/issues/3178 ## What does this PR do? The most important change is this one: ```rust // in milli/src/search/facet/facet_range_search.rs, line 239 let should_stop = { match self.right { Bound::Included(right) => right < previous_key.left_bound, Bound::Excluded(right) => right <= previous_key.left_bound, Bound::Unbounded => false, } }; ``` where the operations `<` and `<=` between the two branches were switched. This caused (very few) documents to be missing from filter results. The second change is a simplification of the algorithm for filters such as `field = value`, where we now perform a direct query into the "Level 0" of the facet db to retrieve the docids instead of invoking the full facet search algorithm. This change is done in `milli/src/search/facet/filter.rs`. I have added yet more insta-snapshot tests, rechecked the content of the snapshots, and added some integration tests as well. This is purely a fix in the search algorithms. Based on this PR alone, a dump will not be necessary to switch from v0.30.1 (where this bug is present) to v0.30.2 (where this PR is merged). Co-authored-by: Loïc Lecrenier <loic.lecrenier@me.com>
This commit is contained in:
commit
098c410612
@ -171,6 +171,8 @@ impl<'t, 'b, 'bitmap> FacetRangeSearch<'t, 'b, 'bitmap> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// should we stop?
|
// should we stop?
|
||||||
|
// We should if the the search range doesn't include any
|
||||||
|
// element from the previous key or its successors
|
||||||
let should_stop = {
|
let should_stop = {
|
||||||
match self.right {
|
match self.right {
|
||||||
Bound::Included(right) => right < previous_key.left_bound,
|
Bound::Included(right) => right < previous_key.left_bound,
|
||||||
@ -233,10 +235,12 @@ impl<'t, 'b, 'bitmap> FacetRangeSearch<'t, 'b, 'bitmap> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// should we stop?
|
// should we stop?
|
||||||
|
// We should if the the search range doesn't include any
|
||||||
|
// element from the previous key or its successors
|
||||||
let should_stop = {
|
let should_stop = {
|
||||||
match self.right {
|
match self.right {
|
||||||
Bound::Included(right) => right <= previous_key.left_bound,
|
Bound::Included(right) => right < previous_key.left_bound,
|
||||||
Bound::Excluded(right) => right < previous_key.left_bound,
|
Bound::Excluded(right) => right <= previous_key.left_bound,
|
||||||
Bound::Unbounded => false,
|
Bound::Unbounded => false,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -321,8 +325,27 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn random_looking_index_snap() {
|
fn random_looking_index_snap() {
|
||||||
let index = get_random_looking_index();
|
let index = get_random_looking_index();
|
||||||
milli_snap!(format!("{index}"));
|
milli_snap!(format!("{index}"), @"3256c76a7c1b768a013e78d5fa6e9ff9");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn random_looking_index_with_multiple_field_ids_snap() {
|
||||||
|
let index = get_random_looking_index_with_multiple_field_ids();
|
||||||
|
milli_snap!(format!("{index}"), @"c3e5fe06a8f1c404ed4935b32c90a89b");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn simple_index_snap() {
|
||||||
|
let index = get_simple_index();
|
||||||
|
milli_snap!(format!("{index}"), @"5dbfa134cc44abeb3ab6242fc182e48e");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn simple_index_with_multiple_field_ids_snap() {
|
||||||
|
let index = get_simple_index_with_multiple_field_ids();
|
||||||
|
milli_snap!(format!("{index}"), @"a4893298218f682bc76357f46777448c");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn filter_range_increasing() {
|
fn filter_range_increasing() {
|
||||||
let indexes = [
|
let indexes = [
|
||||||
@ -349,7 +372,7 @@ mod tests {
|
|||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
#[allow(clippy::format_push_string)]
|
#[allow(clippy::format_push_string)]
|
||||||
results.push_str(&format!("{}\n", display_bitmap(&docids)));
|
results.push_str(&format!("0 <= . <= {i} : {}\n", display_bitmap(&docids)));
|
||||||
}
|
}
|
||||||
milli_snap!(results, format!("included_{i}"));
|
milli_snap!(results, format!("included_{i}"));
|
||||||
let mut results = String::new();
|
let mut results = String::new();
|
||||||
@ -368,7 +391,7 @@ mod tests {
|
|||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
#[allow(clippy::format_push_string)]
|
#[allow(clippy::format_push_string)]
|
||||||
results.push_str(&format!("{}\n", display_bitmap(&docids)));
|
results.push_str(&format!("0 < . < {i} : {}\n", display_bitmap(&docids)));
|
||||||
}
|
}
|
||||||
milli_snap!(results, format!("excluded_{i}"));
|
milli_snap!(results, format!("excluded_{i}"));
|
||||||
txn.commit().unwrap();
|
txn.commit().unwrap();
|
||||||
@ -401,7 +424,7 @@ mod tests {
|
|||||||
&mut docids,
|
&mut docids,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
results.push_str(&format!("{}\n", display_bitmap(&docids)));
|
results.push_str(&format!("{i} <= . <= 255 : {}\n", display_bitmap(&docids)));
|
||||||
}
|
}
|
||||||
|
|
||||||
milli_snap!(results, format!("included_{i}"));
|
milli_snap!(results, format!("included_{i}"));
|
||||||
@ -422,7 +445,7 @@ mod tests {
|
|||||||
&mut docids,
|
&mut docids,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
results.push_str(&format!("{}\n", display_bitmap(&docids)));
|
results.push_str(&format!("{i} < . < 255 : {}\n", display_bitmap(&docids)));
|
||||||
}
|
}
|
||||||
|
|
||||||
milli_snap!(results, format!("excluded_{i}"));
|
milli_snap!(results, format!("excluded_{i}"));
|
||||||
@ -457,7 +480,11 @@ mod tests {
|
|||||||
&mut docids,
|
&mut docids,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
results.push_str(&format!("{}\n", display_bitmap(&docids)));
|
results.push_str(&format!(
|
||||||
|
"{i} <= . <= {r} : {docids}\n",
|
||||||
|
r = 255. - i,
|
||||||
|
docids = display_bitmap(&docids)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
milli_snap!(results, format!("included_{i}"));
|
milli_snap!(results, format!("included_{i}"));
|
||||||
@ -478,7 +505,11 @@ mod tests {
|
|||||||
&mut docids,
|
&mut docids,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
results.push_str(&format!("{}\n", display_bitmap(&docids)));
|
results.push_str(&format!(
|
||||||
|
"{i} < . < {r} {docids}\n",
|
||||||
|
r = 255. - i,
|
||||||
|
docids = display_bitmap(&docids)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
milli_snap!(results, format!("excluded_{i}"));
|
milli_snap!(results, format!("excluded_{i}"));
|
||||||
@ -486,4 +517,136 @@ mod tests {
|
|||||||
txn.commit().unwrap();
|
txn.commit().unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn filter_range_unbounded() {
|
||||||
|
let indexes = [
|
||||||
|
get_simple_index(),
|
||||||
|
get_random_looking_index(),
|
||||||
|
get_simple_index_with_multiple_field_ids(),
|
||||||
|
get_random_looking_index_with_multiple_field_ids(),
|
||||||
|
];
|
||||||
|
for (i, index) in indexes.iter().enumerate() {
|
||||||
|
let txn = index.env.read_txn().unwrap();
|
||||||
|
let mut results = String::new();
|
||||||
|
for i in 0..=255 {
|
||||||
|
let i = i as f64;
|
||||||
|
let start = Bound::Included(i);
|
||||||
|
let end = Bound::Unbounded;
|
||||||
|
let mut docids = RoaringBitmap::new();
|
||||||
|
find_docids_of_facet_within_bounds::<OrderedF64Codec>(
|
||||||
|
&txn,
|
||||||
|
index.content.remap_key_type::<FacetGroupKeyCodec<OrderedF64Codec>>(),
|
||||||
|
0,
|
||||||
|
&start,
|
||||||
|
&end,
|
||||||
|
&mut docids,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
#[allow(clippy::format_push_string)]
|
||||||
|
results.push_str(&format!(">= {i}: {}\n", display_bitmap(&docids)));
|
||||||
|
}
|
||||||
|
milli_snap!(results, format!("start_from_included_{i}"));
|
||||||
|
let mut results = String::new();
|
||||||
|
for i in 0..=255 {
|
||||||
|
let i = i as f64;
|
||||||
|
let start = Bound::Unbounded;
|
||||||
|
let end = Bound::Included(i);
|
||||||
|
let mut docids = RoaringBitmap::new();
|
||||||
|
find_docids_of_facet_within_bounds::<OrderedF64Codec>(
|
||||||
|
&txn,
|
||||||
|
index.content.remap_key_type::<FacetGroupKeyCodec<OrderedF64Codec>>(),
|
||||||
|
0,
|
||||||
|
&start,
|
||||||
|
&end,
|
||||||
|
&mut docids,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
#[allow(clippy::format_push_string)]
|
||||||
|
results.push_str(&format!("<= {i}: {}\n", display_bitmap(&docids)));
|
||||||
|
}
|
||||||
|
milli_snap!(results, format!("end_at_included_{i}"));
|
||||||
|
|
||||||
|
let mut docids = RoaringBitmap::new();
|
||||||
|
find_docids_of_facet_within_bounds::<OrderedF64Codec>(
|
||||||
|
&txn,
|
||||||
|
index.content.remap_key_type::<FacetGroupKeyCodec<OrderedF64Codec>>(),
|
||||||
|
0,
|
||||||
|
&Bound::Unbounded,
|
||||||
|
&Bound::Unbounded,
|
||||||
|
&mut docids,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
milli_snap!(
|
||||||
|
&format!("all field_id 0: {}\n", display_bitmap(&docids)),
|
||||||
|
format!("unbounded_field_id_0_{i}")
|
||||||
|
);
|
||||||
|
|
||||||
|
let mut docids = RoaringBitmap::new();
|
||||||
|
find_docids_of_facet_within_bounds::<OrderedF64Codec>(
|
||||||
|
&txn,
|
||||||
|
index.content.remap_key_type::<FacetGroupKeyCodec<OrderedF64Codec>>(),
|
||||||
|
1,
|
||||||
|
&Bound::Unbounded,
|
||||||
|
&Bound::Unbounded,
|
||||||
|
&mut docids,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
milli_snap!(
|
||||||
|
&format!("all field_id 1: {}\n", display_bitmap(&docids)),
|
||||||
|
format!("unbounded_field_id_1_{i}")
|
||||||
|
);
|
||||||
|
|
||||||
|
drop(txn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn filter_range_exact() {
|
||||||
|
let indexes = [
|
||||||
|
get_simple_index(),
|
||||||
|
get_random_looking_index(),
|
||||||
|
get_simple_index_with_multiple_field_ids(),
|
||||||
|
get_random_looking_index_with_multiple_field_ids(),
|
||||||
|
];
|
||||||
|
for (i, index) in indexes.iter().enumerate() {
|
||||||
|
let txn = index.env.read_txn().unwrap();
|
||||||
|
let mut results_0 = String::new();
|
||||||
|
let mut results_1 = String::new();
|
||||||
|
for i in 0..=255 {
|
||||||
|
let i = i as f64;
|
||||||
|
let start = Bound::Included(i);
|
||||||
|
let end = Bound::Included(i);
|
||||||
|
let mut docids = RoaringBitmap::new();
|
||||||
|
find_docids_of_facet_within_bounds::<OrderedF64Codec>(
|
||||||
|
&txn,
|
||||||
|
index.content.remap_key_type::<FacetGroupKeyCodec<OrderedF64Codec>>(),
|
||||||
|
0,
|
||||||
|
&start,
|
||||||
|
&end,
|
||||||
|
&mut docids,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
#[allow(clippy::format_push_string)]
|
||||||
|
results_0.push_str(&format!("{i}: {}\n", display_bitmap(&docids)));
|
||||||
|
|
||||||
|
let mut docids = RoaringBitmap::new();
|
||||||
|
find_docids_of_facet_within_bounds::<OrderedF64Codec>(
|
||||||
|
&txn,
|
||||||
|
index.content.remap_key_type::<FacetGroupKeyCodec<OrderedF64Codec>>(),
|
||||||
|
1,
|
||||||
|
&start,
|
||||||
|
&end,
|
||||||
|
&mut docids,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
#[allow(clippy::format_push_string)]
|
||||||
|
results_1.push_str(&format!("{i}: {}\n", display_bitmap(&docids)));
|
||||||
|
}
|
||||||
|
milli_snap!(results_0, format!("field_id_0_exact_{i}"));
|
||||||
|
milli_snap!(results_1, format!("field_id_1_exact_{i}"));
|
||||||
|
|
||||||
|
drop(txn);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ use std::ops::Bound::{self, Excluded, Included};
|
|||||||
|
|
||||||
use either::Either;
|
use either::Either;
|
||||||
pub use filter_parser::{Condition, Error as FPError, FilterCondition, Span, Token};
|
pub use filter_parser::{Condition, Error as FPError, FilterCondition, Span, Token};
|
||||||
use heed::types::DecodeIgnore;
|
|
||||||
use roaring::RoaringBitmap;
|
use roaring::RoaringBitmap;
|
||||||
|
|
||||||
use super::facet_range_search;
|
use super::facet_range_search;
|
||||||
@ -200,20 +199,10 @@ impl<'a> Filter<'a> {
|
|||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let number = val.parse_finite_float().ok();
|
let number = val.parse_finite_float().ok();
|
||||||
let number_docids = match number {
|
let number_docids = match number {
|
||||||
Some(n) => {
|
Some(n) => numbers_db
|
||||||
let n = Included(n);
|
.get(rtxn, &FacetGroupKey { field_id, level: 0, left_bound: n })?
|
||||||
let mut output = RoaringBitmap::new();
|
.map(|v| v.bitmap)
|
||||||
Self::explore_facet_number_levels(
|
.unwrap_or_default(),
|
||||||
rtxn,
|
|
||||||
numbers_db,
|
|
||||||
field_id,
|
|
||||||
0,
|
|
||||||
n,
|
|
||||||
n,
|
|
||||||
&mut output,
|
|
||||||
)?;
|
|
||||||
output
|
|
||||||
}
|
|
||||||
None => RoaringBitmap::new(),
|
None => RoaringBitmap::new(),
|
||||||
};
|
};
|
||||||
return Ok(string_docids | number_docids);
|
return Ok(string_docids | number_docids);
|
||||||
@ -226,41 +215,10 @@ impl<'a> Filter<'a> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Ask for the biggest value that can exist for this specific field, if it exists
|
|
||||||
// that's fine if it don't, the value just before will be returned instead.
|
|
||||||
let biggest_level = numbers_db
|
|
||||||
.remap_data_type::<DecodeIgnore>()
|
|
||||||
.get_lower_than_or_equal_to(
|
|
||||||
rtxn,
|
|
||||||
&FacetGroupKey { field_id, level: u8::MAX, left_bound: f64::MAX },
|
|
||||||
)?
|
|
||||||
.and_then(
|
|
||||||
|(FacetGroupKey { field_id: id, level, .. }, _)| {
|
|
||||||
if id == field_id {
|
|
||||||
Some(level)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
match biggest_level {
|
|
||||||
Some(level) => {
|
|
||||||
let mut output = RoaringBitmap::new();
|
let mut output = RoaringBitmap::new();
|
||||||
Self::explore_facet_number_levels(
|
Self::explore_facet_number_levels(rtxn, numbers_db, field_id, left, right, &mut output)?;
|
||||||
rtxn,
|
|
||||||
numbers_db,
|
|
||||||
field_id,
|
|
||||||
level,
|
|
||||||
left,
|
|
||||||
right,
|
|
||||||
&mut output,
|
|
||||||
)?;
|
|
||||||
Ok(output)
|
Ok(output)
|
||||||
}
|
}
|
||||||
None => Ok(RoaringBitmap::new()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Aggregates the documents ids that are part of the specified range automatically
|
/// Aggregates the documents ids that are part of the specified range automatically
|
||||||
/// going deeper through the levels.
|
/// going deeper through the levels.
|
||||||
@ -268,18 +226,11 @@ impl<'a> Filter<'a> {
|
|||||||
rtxn: &heed::RoTxn,
|
rtxn: &heed::RoTxn,
|
||||||
db: heed::Database<FacetGroupKeyCodec<OrderedF64Codec>, FacetGroupValueCodec>,
|
db: heed::Database<FacetGroupKeyCodec<OrderedF64Codec>, FacetGroupValueCodec>,
|
||||||
field_id: FieldId,
|
field_id: FieldId,
|
||||||
level: u8,
|
|
||||||
left: Bound<f64>,
|
left: Bound<f64>,
|
||||||
right: Bound<f64>,
|
right: Bound<f64>,
|
||||||
output: &mut RoaringBitmap,
|
output: &mut RoaringBitmap,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
match (left, right) {
|
match (left, right) {
|
||||||
// If the request is an exact value we must go directly to the deepest level.
|
|
||||||
(Included(l), Included(r)) if l == r && level > 0 => {
|
|
||||||
return Self::explore_facet_number_levels(
|
|
||||||
rtxn, db, field_id, 0, left, right, output,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// lower TO upper when lower > upper must return no result
|
// lower TO upper when lower > upper must return no result
|
||||||
(Included(l), Included(r)) if l > r => return Ok(()),
|
(Included(l), Included(r)) if l > r => return Ok(()),
|
||||||
(Included(l), Excluded(r)) if l >= r => return Ok(()),
|
(Included(l), Excluded(r)) if l >= r => return Ok(()),
|
||||||
@ -447,10 +398,12 @@ impl<'a> From<FilterCondition<'a>> for Filter<'a> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
use std::iter::FromIterator;
|
||||||
|
|
||||||
use big_s::S;
|
use big_s::S;
|
||||||
use either::Either;
|
use either::Either;
|
||||||
use maplit::hashset;
|
use maplit::hashset;
|
||||||
|
use roaring::RoaringBitmap;
|
||||||
|
|
||||||
use crate::index::tests::TempIndex;
|
use crate::index::tests::TempIndex;
|
||||||
use crate::Filter;
|
use crate::Filter;
|
||||||
@ -801,4 +754,85 @@ mod tests {
|
|||||||
Err(crate::Error::UserError(crate::error::UserError::InvalidFilter(_)))
|
Err(crate::Error::UserError(crate::error::UserError::InvalidFilter(_)))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn filter_number() {
|
||||||
|
let index = TempIndex::new();
|
||||||
|
|
||||||
|
index
|
||||||
|
.update_settings(|settings| {
|
||||||
|
settings.set_primary_key("id".to_owned());
|
||||||
|
settings.set_filterable_fields(hashset! { S("id"), S("one"), S("two") });
|
||||||
|
})
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let mut docs = vec![];
|
||||||
|
for i in 0..100 {
|
||||||
|
docs.push(serde_json::json!({ "id": i, "two": i % 10 }));
|
||||||
|
}
|
||||||
|
|
||||||
|
index.add_documents(documents!(docs)).unwrap();
|
||||||
|
|
||||||
|
let rtxn = index.read_txn().unwrap();
|
||||||
|
for i in 0..100 {
|
||||||
|
let filter_str = format!("id = {i}");
|
||||||
|
let filter = Filter::from_str(&filter_str).unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::from_iter([i]));
|
||||||
|
}
|
||||||
|
for i in 0..100 {
|
||||||
|
let filter_str = format!("id > {i}");
|
||||||
|
let filter = Filter::from_str(&filter_str).unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::from_iter((i + 1)..100));
|
||||||
|
}
|
||||||
|
for i in 0..100 {
|
||||||
|
let filter_str = format!("id < {i}");
|
||||||
|
let filter = Filter::from_str(&filter_str).unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::from_iter(0..i));
|
||||||
|
}
|
||||||
|
for i in 0..100 {
|
||||||
|
let filter_str = format!("id <= {i}");
|
||||||
|
let filter = Filter::from_str(&filter_str).unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::from_iter(0..=i));
|
||||||
|
}
|
||||||
|
for i in 0..100 {
|
||||||
|
let filter_str = format!("id >= {i}");
|
||||||
|
let filter = Filter::from_str(&filter_str).unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::from_iter(i..100));
|
||||||
|
}
|
||||||
|
for i in 0..100 {
|
||||||
|
for j in i..100 {
|
||||||
|
let filter_str = format!("id {i} TO {j}");
|
||||||
|
let filter = Filter::from_str(&filter_str).unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::from_iter(i..=j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let filter = Filter::from_str("one >= 0 OR one <= 0").unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::default());
|
||||||
|
|
||||||
|
let filter = Filter::from_str("one = 0").unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::default());
|
||||||
|
|
||||||
|
for i in 0..10 {
|
||||||
|
for j in i..10 {
|
||||||
|
let filter_str = format!("two {i} TO {j}");
|
||||||
|
let filter = Filter::from_str(&filter_str).unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
result,
|
||||||
|
RoaringBitmap::from_iter((0..100).filter(|x| (i..=j).contains(&(x % 10))))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let filter = Filter::from_str("two != 0").unwrap().unwrap();
|
||||||
|
let result = filter.evaluate(&rtxn, &index).unwrap();
|
||||||
|
assert_eq!(result, RoaringBitmap::from_iter((0..100).filter(|x| x % 10 != 0)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
fcedc563a82c1c61f50174a5f3f982b6
|
adf484f467a31ee9460dec539621938a
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
6cc26e77fc6bd9145deedf14cf422b03
|
c9939aa4977fcd4bfd35852e102dbc82
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
fcedc563a82c1c61f50174a5f3f982b6
|
adf484f467a31ee9460dec539621938a
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
6cc26e77fc6bd9145deedf14cf422b03
|
c9939aa4977fcd4bfd35852e102dbc82
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
57d35cfa419a19a1a1f8d7c8ef096e0f
|
618738d28ff1386b6e93d171a5acb08f
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
3dbe0547b42759795e9b16989df72cee
|
ffb62ab3eef55c2254c13dc0f4099849
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
57d35cfa419a19a1a1f8d7c8ef096e0f
|
618738d28ff1386b6e93d171a5acb08f
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
3dbe0547b42759795e9b16989df72cee
|
ffb62ab3eef55c2254c13dc0f4099849
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
3256c76a7c1b768a013e78d5fa6e9ff9
|
9c25261cec7275cb5cfd85835904d023
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
2f97f18c15e915853e4df879be6e1f63
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
9c25261cec7275cb5cfd85835904d023
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
2f97f18c15e915853e4df879be6e1f63
|
@ -0,0 +1,260 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
0: []
|
||||||
|
1: []
|
||||||
|
2: []
|
||||||
|
3: []
|
||||||
|
4: []
|
||||||
|
5: []
|
||||||
|
6: []
|
||||||
|
7: []
|
||||||
|
8: []
|
||||||
|
9: []
|
||||||
|
10: []
|
||||||
|
11: []
|
||||||
|
12: []
|
||||||
|
13: []
|
||||||
|
14: []
|
||||||
|
15: []
|
||||||
|
16: []
|
||||||
|
17: []
|
||||||
|
18: []
|
||||||
|
19: []
|
||||||
|
20: []
|
||||||
|
21: []
|
||||||
|
22: []
|
||||||
|
23: []
|
||||||
|
24: []
|
||||||
|
25: []
|
||||||
|
26: []
|
||||||
|
27: []
|
||||||
|
28: []
|
||||||
|
29: []
|
||||||
|
30: []
|
||||||
|
31: []
|
||||||
|
32: []
|
||||||
|
33: []
|
||||||
|
34: []
|
||||||
|
35: []
|
||||||
|
36: []
|
||||||
|
37: []
|
||||||
|
38: []
|
||||||
|
39: []
|
||||||
|
40: []
|
||||||
|
41: []
|
||||||
|
42: []
|
||||||
|
43: []
|
||||||
|
44: []
|
||||||
|
45: []
|
||||||
|
46: []
|
||||||
|
47: []
|
||||||
|
48: []
|
||||||
|
49: []
|
||||||
|
50: []
|
||||||
|
51: []
|
||||||
|
52: []
|
||||||
|
53: []
|
||||||
|
54: []
|
||||||
|
55: []
|
||||||
|
56: []
|
||||||
|
57: []
|
||||||
|
58: []
|
||||||
|
59: []
|
||||||
|
60: []
|
||||||
|
61: []
|
||||||
|
62: []
|
||||||
|
63: []
|
||||||
|
64: []
|
||||||
|
65: []
|
||||||
|
66: []
|
||||||
|
67: []
|
||||||
|
68: []
|
||||||
|
69: []
|
||||||
|
70: []
|
||||||
|
71: []
|
||||||
|
72: []
|
||||||
|
73: []
|
||||||
|
74: []
|
||||||
|
75: []
|
||||||
|
76: []
|
||||||
|
77: []
|
||||||
|
78: []
|
||||||
|
79: []
|
||||||
|
80: []
|
||||||
|
81: []
|
||||||
|
82: []
|
||||||
|
83: []
|
||||||
|
84: []
|
||||||
|
85: []
|
||||||
|
86: []
|
||||||
|
87: []
|
||||||
|
88: []
|
||||||
|
89: []
|
||||||
|
90: []
|
||||||
|
91: []
|
||||||
|
92: []
|
||||||
|
93: []
|
||||||
|
94: []
|
||||||
|
95: []
|
||||||
|
96: []
|
||||||
|
97: []
|
||||||
|
98: []
|
||||||
|
99: []
|
||||||
|
100: []
|
||||||
|
101: []
|
||||||
|
102: []
|
||||||
|
103: []
|
||||||
|
104: []
|
||||||
|
105: []
|
||||||
|
106: []
|
||||||
|
107: []
|
||||||
|
108: []
|
||||||
|
109: []
|
||||||
|
110: []
|
||||||
|
111: []
|
||||||
|
112: []
|
||||||
|
113: []
|
||||||
|
114: []
|
||||||
|
115: []
|
||||||
|
116: []
|
||||||
|
117: []
|
||||||
|
118: []
|
||||||
|
119: []
|
||||||
|
120: []
|
||||||
|
121: []
|
||||||
|
122: []
|
||||||
|
123: []
|
||||||
|
124: []
|
||||||
|
125: []
|
||||||
|
126: []
|
||||||
|
127: []
|
||||||
|
128: []
|
||||||
|
129: []
|
||||||
|
130: []
|
||||||
|
131: []
|
||||||
|
132: []
|
||||||
|
133: []
|
||||||
|
134: []
|
||||||
|
135: []
|
||||||
|
136: []
|
||||||
|
137: []
|
||||||
|
138: []
|
||||||
|
139: []
|
||||||
|
140: []
|
||||||
|
141: []
|
||||||
|
142: []
|
||||||
|
143: []
|
||||||
|
144: []
|
||||||
|
145: []
|
||||||
|
146: []
|
||||||
|
147: []
|
||||||
|
148: []
|
||||||
|
149: []
|
||||||
|
150: []
|
||||||
|
151: []
|
||||||
|
152: []
|
||||||
|
153: []
|
||||||
|
154: []
|
||||||
|
155: []
|
||||||
|
156: []
|
||||||
|
157: []
|
||||||
|
158: []
|
||||||
|
159: []
|
||||||
|
160: []
|
||||||
|
161: []
|
||||||
|
162: []
|
||||||
|
163: []
|
||||||
|
164: []
|
||||||
|
165: []
|
||||||
|
166: []
|
||||||
|
167: []
|
||||||
|
168: []
|
||||||
|
169: []
|
||||||
|
170: []
|
||||||
|
171: []
|
||||||
|
172: []
|
||||||
|
173: []
|
||||||
|
174: []
|
||||||
|
175: []
|
||||||
|
176: []
|
||||||
|
177: []
|
||||||
|
178: []
|
||||||
|
179: []
|
||||||
|
180: []
|
||||||
|
181: []
|
||||||
|
182: []
|
||||||
|
183: []
|
||||||
|
184: []
|
||||||
|
185: []
|
||||||
|
186: []
|
||||||
|
187: []
|
||||||
|
188: []
|
||||||
|
189: []
|
||||||
|
190: []
|
||||||
|
191: []
|
||||||
|
192: []
|
||||||
|
193: []
|
||||||
|
194: []
|
||||||
|
195: []
|
||||||
|
196: []
|
||||||
|
197: []
|
||||||
|
198: []
|
||||||
|
199: []
|
||||||
|
200: []
|
||||||
|
201: []
|
||||||
|
202: []
|
||||||
|
203: []
|
||||||
|
204: []
|
||||||
|
205: []
|
||||||
|
206: []
|
||||||
|
207: []
|
||||||
|
208: []
|
||||||
|
209: []
|
||||||
|
210: []
|
||||||
|
211: []
|
||||||
|
212: []
|
||||||
|
213: []
|
||||||
|
214: []
|
||||||
|
215: []
|
||||||
|
216: []
|
||||||
|
217: []
|
||||||
|
218: []
|
||||||
|
219: []
|
||||||
|
220: []
|
||||||
|
221: []
|
||||||
|
222: []
|
||||||
|
223: []
|
||||||
|
224: []
|
||||||
|
225: []
|
||||||
|
226: []
|
||||||
|
227: []
|
||||||
|
228: []
|
||||||
|
229: []
|
||||||
|
230: []
|
||||||
|
231: []
|
||||||
|
232: []
|
||||||
|
233: []
|
||||||
|
234: []
|
||||||
|
235: []
|
||||||
|
236: []
|
||||||
|
237: []
|
||||||
|
238: []
|
||||||
|
239: []
|
||||||
|
240: []
|
||||||
|
241: []
|
||||||
|
242: []
|
||||||
|
243: []
|
||||||
|
244: []
|
||||||
|
245: []
|
||||||
|
246: []
|
||||||
|
247: []
|
||||||
|
248: []
|
||||||
|
249: []
|
||||||
|
250: []
|
||||||
|
251: []
|
||||||
|
252: []
|
||||||
|
253: []
|
||||||
|
254: []
|
||||||
|
255: []
|
||||||
|
|
@ -0,0 +1,260 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
0: []
|
||||||
|
1: []
|
||||||
|
2: []
|
||||||
|
3: []
|
||||||
|
4: []
|
||||||
|
5: []
|
||||||
|
6: []
|
||||||
|
7: []
|
||||||
|
8: []
|
||||||
|
9: []
|
||||||
|
10: []
|
||||||
|
11: []
|
||||||
|
12: []
|
||||||
|
13: []
|
||||||
|
14: []
|
||||||
|
15: []
|
||||||
|
16: []
|
||||||
|
17: []
|
||||||
|
18: []
|
||||||
|
19: []
|
||||||
|
20: []
|
||||||
|
21: []
|
||||||
|
22: []
|
||||||
|
23: []
|
||||||
|
24: []
|
||||||
|
25: []
|
||||||
|
26: []
|
||||||
|
27: []
|
||||||
|
28: []
|
||||||
|
29: []
|
||||||
|
30: []
|
||||||
|
31: []
|
||||||
|
32: []
|
||||||
|
33: []
|
||||||
|
34: []
|
||||||
|
35: []
|
||||||
|
36: []
|
||||||
|
37: []
|
||||||
|
38: []
|
||||||
|
39: []
|
||||||
|
40: []
|
||||||
|
41: []
|
||||||
|
42: []
|
||||||
|
43: []
|
||||||
|
44: []
|
||||||
|
45: []
|
||||||
|
46: []
|
||||||
|
47: []
|
||||||
|
48: []
|
||||||
|
49: []
|
||||||
|
50: []
|
||||||
|
51: []
|
||||||
|
52: []
|
||||||
|
53: []
|
||||||
|
54: []
|
||||||
|
55: []
|
||||||
|
56: []
|
||||||
|
57: []
|
||||||
|
58: []
|
||||||
|
59: []
|
||||||
|
60: []
|
||||||
|
61: []
|
||||||
|
62: []
|
||||||
|
63: []
|
||||||
|
64: []
|
||||||
|
65: []
|
||||||
|
66: []
|
||||||
|
67: []
|
||||||
|
68: []
|
||||||
|
69: []
|
||||||
|
70: []
|
||||||
|
71: []
|
||||||
|
72: []
|
||||||
|
73: []
|
||||||
|
74: []
|
||||||
|
75: []
|
||||||
|
76: []
|
||||||
|
77: []
|
||||||
|
78: []
|
||||||
|
79: []
|
||||||
|
80: []
|
||||||
|
81: []
|
||||||
|
82: []
|
||||||
|
83: []
|
||||||
|
84: []
|
||||||
|
85: []
|
||||||
|
86: []
|
||||||
|
87: []
|
||||||
|
88: []
|
||||||
|
89: []
|
||||||
|
90: []
|
||||||
|
91: []
|
||||||
|
92: []
|
||||||
|
93: []
|
||||||
|
94: []
|
||||||
|
95: []
|
||||||
|
96: []
|
||||||
|
97: []
|
||||||
|
98: []
|
||||||
|
99: []
|
||||||
|
100: []
|
||||||
|
101: []
|
||||||
|
102: []
|
||||||
|
103: []
|
||||||
|
104: []
|
||||||
|
105: []
|
||||||
|
106: []
|
||||||
|
107: []
|
||||||
|
108: []
|
||||||
|
109: []
|
||||||
|
110: []
|
||||||
|
111: []
|
||||||
|
112: []
|
||||||
|
113: []
|
||||||
|
114: []
|
||||||
|
115: []
|
||||||
|
116: []
|
||||||
|
117: []
|
||||||
|
118: []
|
||||||
|
119: []
|
||||||
|
120: []
|
||||||
|
121: []
|
||||||
|
122: []
|
||||||
|
123: []
|
||||||
|
124: []
|
||||||
|
125: []
|
||||||
|
126: []
|
||||||
|
127: []
|
||||||
|
128: []
|
||||||
|
129: []
|
||||||
|
130: []
|
||||||
|
131: []
|
||||||
|
132: []
|
||||||
|
133: []
|
||||||
|
134: []
|
||||||
|
135: []
|
||||||
|
136: []
|
||||||
|
137: []
|
||||||
|
138: []
|
||||||
|
139: []
|
||||||
|
140: []
|
||||||
|
141: []
|
||||||
|
142: []
|
||||||
|
143: []
|
||||||
|
144: []
|
||||||
|
145: []
|
||||||
|
146: []
|
||||||
|
147: []
|
||||||
|
148: []
|
||||||
|
149: []
|
||||||
|
150: []
|
||||||
|
151: []
|
||||||
|
152: []
|
||||||
|
153: []
|
||||||
|
154: []
|
||||||
|
155: []
|
||||||
|
156: []
|
||||||
|
157: []
|
||||||
|
158: []
|
||||||
|
159: []
|
||||||
|
160: []
|
||||||
|
161: []
|
||||||
|
162: []
|
||||||
|
163: []
|
||||||
|
164: []
|
||||||
|
165: []
|
||||||
|
166: []
|
||||||
|
167: []
|
||||||
|
168: []
|
||||||
|
169: []
|
||||||
|
170: []
|
||||||
|
171: []
|
||||||
|
172: []
|
||||||
|
173: []
|
||||||
|
174: []
|
||||||
|
175: []
|
||||||
|
176: []
|
||||||
|
177: []
|
||||||
|
178: []
|
||||||
|
179: []
|
||||||
|
180: []
|
||||||
|
181: []
|
||||||
|
182: []
|
||||||
|
183: []
|
||||||
|
184: []
|
||||||
|
185: []
|
||||||
|
186: []
|
||||||
|
187: []
|
||||||
|
188: []
|
||||||
|
189: []
|
||||||
|
190: []
|
||||||
|
191: []
|
||||||
|
192: []
|
||||||
|
193: []
|
||||||
|
194: []
|
||||||
|
195: []
|
||||||
|
196: []
|
||||||
|
197: []
|
||||||
|
198: []
|
||||||
|
199: []
|
||||||
|
200: []
|
||||||
|
201: []
|
||||||
|
202: []
|
||||||
|
203: []
|
||||||
|
204: []
|
||||||
|
205: []
|
||||||
|
206: []
|
||||||
|
207: []
|
||||||
|
208: []
|
||||||
|
209: []
|
||||||
|
210: []
|
||||||
|
211: []
|
||||||
|
212: []
|
||||||
|
213: []
|
||||||
|
214: []
|
||||||
|
215: []
|
||||||
|
216: []
|
||||||
|
217: []
|
||||||
|
218: []
|
||||||
|
219: []
|
||||||
|
220: []
|
||||||
|
221: []
|
||||||
|
222: []
|
||||||
|
223: []
|
||||||
|
224: []
|
||||||
|
225: []
|
||||||
|
226: []
|
||||||
|
227: []
|
||||||
|
228: []
|
||||||
|
229: []
|
||||||
|
230: []
|
||||||
|
231: []
|
||||||
|
232: []
|
||||||
|
233: []
|
||||||
|
234: []
|
||||||
|
235: []
|
||||||
|
236: []
|
||||||
|
237: []
|
||||||
|
238: []
|
||||||
|
239: []
|
||||||
|
240: []
|
||||||
|
241: []
|
||||||
|
242: []
|
||||||
|
243: []
|
||||||
|
244: []
|
||||||
|
245: []
|
||||||
|
246: []
|
||||||
|
247: []
|
||||||
|
248: []
|
||||||
|
249: []
|
||||||
|
250: []
|
||||||
|
251: []
|
||||||
|
252: []
|
||||||
|
253: []
|
||||||
|
254: []
|
||||||
|
255: []
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
9c25261cec7275cb5cfd85835904d023
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
2f97f18c15e915853e4df879be6e1f63
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
c1c7a0bb91d53d33724583b6d4a99f16
|
e849066b0e43d5c456f086c552372afc
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
12213d3f1047a0c3d08e4670a7d688e7
|
8cc5e82995b0443b660f419bb9ea2e85
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
c1c7a0bb91d53d33724583b6d4a99f16
|
e849066b0e43d5c456f086c552372afc
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
12213d3f1047a0c3d08e4670a7d688e7
|
8cc5e82995b0443b660f419bb9ea2e85
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
ca59f20e043a4d52c49e15b10adf96bb
|
73b48005dc57b04f0939bbf21a68dab6
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
cb69e0fe10fb299bafe77514204379cb
|
3c23d35627667dcee98468bfdecf09d3
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
ca59f20e043a4d52c49e15b10adf96bb
|
73b48005dc57b04f0939bbf21a68dab6
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
cb69e0fe10fb299bafe77514204379cb
|
3c23d35627667dcee98468bfdecf09d3
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
3456db9a1bb94c33c1e9f656184ee711
|
c3f8b0b858a4820a508b25b42328cedd
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
2127cd818b457e0611e0c8e1a871602a
|
38a42f5dc25e99d7a5312a63ce94ed30
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
3456db9a1bb94c33c1e9f656184ee711
|
c3f8b0b858a4820a508b25b42328cedd
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
2127cd818b457e0611e0c8e1a871602a
|
38a42f5dc25e99d7a5312a63ce94ed30
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
b976551ceff412bfb2ec9bfbda320bbb
|
2049930204498b323885c91de88e44ca
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
7620ca1a96882c7147d3fd996570f9b3
|
7f0ca8c0fc6494f3dba46e8eb9699045
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
b976551ceff412bfb2ec9bfbda320bbb
|
2049930204498b323885c91de88e44ca
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
source: milli/src/search/facet/facet_range_search.rs
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
---
|
---
|
||||||
7620ca1a96882c7147d3fd996570f9b3
|
7f0ca8c0fc6494f3dba46e8eb9699045
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
ad8fc873747aaf1d3590e7ccab735985
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
7c6cc88697da835d33877b2df41fa1cb
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
ad8fc873747aaf1d3590e7ccab735985
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
7c6cc88697da835d33877b2df41fa1cb
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
9a8c7343b4735d37704748cabcd51ff2
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
898a7dc25a1441bc3e7e2a8a62d99090
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
9a8c7343b4735d37704748cabcd51ff2
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
898a7dc25a1441bc3e7e2a8a62d99090
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, ]
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 0: [3, 5, 6, 9, 10, 11, 14, 18, 19, 24, 26, 28, 29, 32, 33, 35, 36, 37, 38, 39, 41, 46, 47, 49, 52, 53, 55, 59, 61, 64, 68, 71, 74, 75, 76, 81, 83, 85, 86, 88, 90, 91, 92, 98, 99, 101, 102, 103, 105, 106, 107, 109, 110, 111, 114, 115, 118, 119, 123, 124, 126, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 143, 144, 146, 147, 149, 150, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 167, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 215, 216, 219, 220, 223, 224, 226, 230, 231, 233, 235, 236, 237, 238, 239, 241, 243, 244, 247, 250, 256, 258, 260, 262, 263, 264, 267, 269, 273, 277, 278, 279, 281, 282, 286, 289, 292, 293, 295, 297, 305, 306, 307, 308, 309, 310, 316, 319, 320, 323, 326, 335, 336, 338, 343, ]
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, ]
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 0: [3, 5, 6, 9, 10, 11, 14, 18, 19, 24, 26, 28, 29, 32, 33, 35, 36, 37, 38, 39, 41, 46, 47, 49, 52, 53, 55, 59, 61, 64, 68, 71, 74, 75, 76, 81, 83, 85, 86, 88, 90, 91, 92, 98, 99, 101, 102, 103, 105, 106, 107, 109, 110, 111, 114, 115, 118, 119, 123, 124, 126, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 143, 144, 146, 147, 149, 150, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 167, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 215, 216, 219, 220, 223, 224, 226, 230, 231, 233, 235, 236, 237, 238, 239, 241, 243, 244, 247, 250, 256, 258, 260, 262, 263, 264, 267, 269, 273, 277, 278, 279, 281, 282, 286, 289, 292, 293, 295, 297, 305, 306, 307, 308, 309, 310, 316, 319, 320, 323, 326, 335, 336, 338, 343, ]
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 1: []
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 1: []
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, ]
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/facet/facet_range_search.rs
|
||||||
|
---
|
||||||
|
all field_id 1: [3, 5, 6, 9, 10, 11, 14, 18, 19, 24, 26, 28, 29, 32, 33, 35, 36, 37, 38, 39, 41, 46, 47, 49, 52, 53, 55, 59, 61, 64, 68, 71, 74, 75, 76, 81, 83, 85, 86, 88, 90, 91, 92, 98, 99, 101, 102, 103, 105, 106, 107, 109, 110, 111, 114, 115, 118, 119, 123, 124, 126, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 141, 143, 144, 146, 147, 149, 150, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 167, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 185, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 199, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 215, 216, 219, 220, 223, 224, 226, 230, 231, 233, 235, 236, 237, 238, 239, 241, 243, 244, 247, 250, 256, 258, 260, 262, 263, 264, 267, 269, 273, 277, 278, 279, 281, 282, 286, 289, 292, 293, 295, 297, 305, 306, 307, 308, 309, 310, 316, 319, 320, 323, 326, 335, 336, 338, 343, ]
|
||||||
|
|
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
source: milli/src/update/index_documents/mod.rs
|
|
||||||
---
|
|
||||||
[0, 1, 4, ]
|
|
Loading…
Reference in New Issue
Block a user