mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-27 04:25:06 +08:00
Add score details to new search tests
This commit is contained in:
parent
49c8bc4de6
commit
d26e9a96ec
@ -122,8 +122,11 @@ fn test_attribute_fid_simple() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 8, 7, 11, 10, 13, 12, 14, 0]");
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -135,6 +138,11 @@ fn test_attribute_fid_ngrams() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 8, 7, 11, 10, 13, 12, 14, 0]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
}
|
}
|
||||||
|
@ -137,8 +137,13 @@ fn test_attribute_position_simple() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("quick brown");
|
s.query("quick brown");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_attribute_position_repeated() {
|
fn test_attribute_position_repeated() {
|
||||||
@ -149,8 +154,13 @@ fn test_attribute_position_repeated() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("a a a a a");
|
s.query("a a a a a");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[5, 7, 8, 9, 6]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -162,8 +172,13 @@ fn test_attribute_position_different_fields() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("quick brown");
|
s.query("quick brown");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -175,6 +190,11 @@ fn test_attribute_position_ngrams() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("quick brown");
|
s.query("quick brown");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
}
|
}
|
||||||
|
@ -474,8 +474,14 @@ fn test_exactness_simple_ordered() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 8, 7, 6, 5, 4, 3, 2, 1]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -501,8 +507,14 @@ fn test_exactness_simple_reversed() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 8, 3, 4, 5, 6, 7]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -519,8 +531,14 @@ fn test_exactness_simple_reversed() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 8, 3, 4, 5, 6, 7]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -544,8 +562,14 @@ fn test_exactness_simple_random() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[8, 7, 4, 6, 3, 5]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -568,8 +592,14 @@ fn test_exactness_attribute_starts_with_simple() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("this balcony");
|
s.query("this balcony");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 1, 0]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -589,8 +619,14 @@ fn test_exactness_attribute_starts_with_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("\"overlooking the sea\" is a beautiful balcony");
|
s.query("\"overlooking the sea\" is a beautiful balcony");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6, 5, 4, 1]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -604,8 +640,14 @@ fn test_exactness_attribute_starts_with_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("overlooking the sea is a beautiful balcony");
|
s.query("overlooking the sea is a beautiful balcony");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6, 5, 4, 3, 1, 7]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -628,8 +670,14 @@ fn test_exactness_all_candidates_with_typo() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("overlocking the sea is a beautiful balcony");
|
s.query("overlocking the sea is a beautiful balcony");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[4, 5, 6, 1, 7]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
// "overlooking" is returned here because the term matching strategy allows it
|
// "overlooking" is returned here because the term matching strategy allows it
|
||||||
// but it has the worst exactness score (0 exact words)
|
// but it has the worst exactness score (0 exact words)
|
||||||
@ -659,8 +707,14 @@ fn test_exactness_after_words() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[19, 9, 18, 8, 17, 16, 6, 7, 15, 5, 14, 4, 13, 3, 12, 2, 1, 11]");
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
@ -702,7 +756,13 @@ fn test_words_after_exactness() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[19, 9, 18, 8, 17, 16, 6, 7, 15, 5, 14, 4, 13, 3, 12, 2, 1, 11]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[19, 9, 18, 8, 17, 16, 6, 7, 15, 5, 14, 4, 13, 3, 12, 2, 1, 11]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
@ -745,7 +805,14 @@ fn test_proximity_after_exactness() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
|
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 1, 0, 4, 5, 8, 7, 3, 6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 1, 0, 4, 5, 8, 7, 3, 6]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
@ -776,7 +843,13 @@ fn test_proximity_after_exactness() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1, 2]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1, 2]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
@ -804,7 +877,13 @@ fn test_exactness_followed_by_typo_prefer_no_typo_prefix() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("quick brown fox extra");
|
s.query("quick brown fox extra");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 1, 0, 4, 3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 1, 0, 4, 3]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
@ -834,7 +913,13 @@ fn test_typo_followed_by_exactness() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
s.query("extraordinarily quick brown fox");
|
s.query("extraordinarily quick brown fox");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
|
let document_ids_scores: Vec<_> =
|
||||||
|
documents_ids.iter().zip(document_scores.into_iter()).collect();
|
||||||
|
insta::assert_snapshot!(format!("{document_ids_scores:#?}"));
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[1, 0, 4, 3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[1, 0, 4, 3]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ use heed::RoTxn;
|
|||||||
use maplit::hashset;
|
use maplit::hashset;
|
||||||
|
|
||||||
use crate::index::tests::TempIndex;
|
use crate::index::tests::TempIndex;
|
||||||
|
use crate::score_details::ScoreDetails;
|
||||||
use crate::search::new::tests::collect_field_values;
|
use crate::search::new::tests::collect_field_values;
|
||||||
use crate::{AscDesc, Criterion, GeoSortStrategy, Member, Search, SearchResult};
|
use crate::{AscDesc, Criterion, GeoSortStrategy, Member, Search, SearchResult};
|
||||||
|
|
||||||
@ -28,30 +29,37 @@ fn execute_iterative_and_rtree_returns_the_same<'a>(
|
|||||||
rtxn: &RoTxn<'a>,
|
rtxn: &RoTxn<'a>,
|
||||||
index: &TempIndex,
|
index: &TempIndex,
|
||||||
search: &mut Search<'a>,
|
search: &mut Search<'a>,
|
||||||
) -> Vec<usize> {
|
) -> (Vec<usize>, Vec<Vec<ScoreDetails>>) {
|
||||||
search.geo_sort_strategy(GeoSortStrategy::AlwaysIterative(2));
|
search.geo_sort_strategy(GeoSortStrategy::AlwaysIterative(2));
|
||||||
let SearchResult { documents_ids, .. } = search.execute().unwrap();
|
let SearchResult { documents_ids, document_scores: iterative_scores_bucketed, .. } =
|
||||||
|
search.execute().unwrap();
|
||||||
let iterative_ids_bucketed = collect_field_values(index, rtxn, "id", &documents_ids);
|
let iterative_ids_bucketed = collect_field_values(index, rtxn, "id", &documents_ids);
|
||||||
|
|
||||||
search.geo_sort_strategy(GeoSortStrategy::AlwaysIterative(1000));
|
search.geo_sort_strategy(GeoSortStrategy::AlwaysIterative(1000));
|
||||||
let SearchResult { documents_ids, .. } = search.execute().unwrap();
|
let SearchResult { documents_ids, document_scores: iterative_scores, .. } =
|
||||||
|
search.execute().unwrap();
|
||||||
let iterative_ids = collect_field_values(index, rtxn, "id", &documents_ids);
|
let iterative_ids = collect_field_values(index, rtxn, "id", &documents_ids);
|
||||||
|
|
||||||
assert_eq!(iterative_ids_bucketed, iterative_ids, "iterative bucket");
|
assert_eq!(iterative_ids_bucketed, iterative_ids, "iterative bucket");
|
||||||
|
assert_eq!(iterative_scores_bucketed, iterative_scores, "iterative bucket score");
|
||||||
|
|
||||||
search.geo_sort_strategy(GeoSortStrategy::AlwaysRtree(2));
|
search.geo_sort_strategy(GeoSortStrategy::AlwaysRtree(2));
|
||||||
let SearchResult { documents_ids, .. } = search.execute().unwrap();
|
let SearchResult { documents_ids, document_scores: rtree_scores_bucketed, .. } =
|
||||||
|
search.execute().unwrap();
|
||||||
let rtree_ids_bucketed = collect_field_values(index, rtxn, "id", &documents_ids);
|
let rtree_ids_bucketed = collect_field_values(index, rtxn, "id", &documents_ids);
|
||||||
|
|
||||||
search.geo_sort_strategy(GeoSortStrategy::AlwaysRtree(1000));
|
search.geo_sort_strategy(GeoSortStrategy::AlwaysRtree(1000));
|
||||||
let SearchResult { documents_ids, .. } = search.execute().unwrap();
|
let SearchResult { documents_ids, document_scores: rtree_scores, .. } =
|
||||||
|
search.execute().unwrap();
|
||||||
let rtree_ids = collect_field_values(index, rtxn, "id", &documents_ids);
|
let rtree_ids = collect_field_values(index, rtxn, "id", &documents_ids);
|
||||||
|
|
||||||
assert_eq!(rtree_ids_bucketed, rtree_ids, "rtree bucket");
|
assert_eq!(rtree_ids_bucketed, rtree_ids, "rtree bucket");
|
||||||
|
assert_eq!(rtree_scores_bucketed, rtree_scores, "rtree bucket score");
|
||||||
|
|
||||||
assert_eq!(iterative_ids, rtree_ids, "iterative vs rtree");
|
assert_eq!(iterative_ids, rtree_ids, "iterative vs rtree");
|
||||||
|
assert_eq!(iterative_scores, rtree_scores, "iterative vs rtree scores");
|
||||||
|
|
||||||
iterative_ids.into_iter().map(|id| id.parse().unwrap()).collect()
|
(iterative_ids.into_iter().map(|id| id.parse().unwrap()).collect(), iterative_scores)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -73,14 +81,17 @@ fn test_geo_sort() {
|
|||||||
let rtxn = index.read_txn().unwrap();
|
let rtxn = index.read_txn().unwrap();
|
||||||
|
|
||||||
let mut s = Search::new(&rtxn, &index);
|
let mut s = Search::new(&rtxn, &index);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 3, 4, 5, 6, 8, 7, 10, 9]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 3, 4, 5, 6, 8, 7, 10, 9]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[5, 4, 3, 2, 1, 0, 6, 8, 7, 10, 9]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[5, 4, 3, 2, 1, 0, 6, 8, 7, 10, 9]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -101,52 +112,63 @@ fn test_geo_sort_around_the_edge_of_the_flat_earth() {
|
|||||||
let rtxn = index.read_txn().unwrap();
|
let rtxn = index.read_txn().unwrap();
|
||||||
|
|
||||||
let mut s = Search::new(&rtxn, &index);
|
let mut s = Search::new(&rtxn, &index);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
|
||||||
// --- asc
|
// --- asc
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 3, 4]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 3, 4]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
// ensuring the lat doesn't wrap around
|
// ensuring the lat doesn't wrap around
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([85., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([85., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[1, 0, 3, 4, 2]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[1, 0, 3, 4, 2]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([-85., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([-85., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[2, 0, 3, 4, 1]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[2, 0, 3, 4, 1]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
// ensuring the lng does wrap around
|
// ensuring the lng does wrap around
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 175.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 175.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[3, 4, 2, 1, 0]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[3, 4, 2, 1, 0]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., -175.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., -175.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[4, 3, 2, 1, 0]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[4, 3, 2, 1, 0]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
// --- desc
|
// --- desc
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[4, 3, 2, 1, 0]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[4, 3, 2, 1, 0]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
// ensuring the lat doesn't wrap around
|
// ensuring the lat doesn't wrap around
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([85., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([85., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[2, 4, 3, 0, 1]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[2, 4, 3, 0, 1]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([-85., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([-85., 0.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[1, 4, 3, 0, 2]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[1, 4, 3, 0, 2]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
// ensuring the lng does wrap around
|
// ensuring the lng does wrap around
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., 175.]))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., 175.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 4, 3]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 4, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., -175.]))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Geo([0., -175.]))]);
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 3, 4]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 1, 2, 3, 4]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -166,19 +188,98 @@ fn geo_sort_mixed_with_words() {
|
|||||||
let rtxn = index.read_txn().unwrap();
|
let rtxn = index.read_txn().unwrap();
|
||||||
|
|
||||||
let mut s = Search::new(&rtxn, &index);
|
let mut s = Search::new(&rtxn, &index);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
||||||
|
|
||||||
s.query("jean");
|
s.query("jean");
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 2, 3]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 2, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
|
|
||||||
s.query("bob");
|
s.query("bob");
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[2, 4]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[2, 4]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
|
|
||||||
s.query("intel");
|
s.query("intel");
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[1]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[1]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -198,9 +299,11 @@ fn geo_sort_without_any_geo_faceted_documents() {
|
|||||||
let rtxn = index.read_txn().unwrap();
|
let rtxn = index.read_txn().unwrap();
|
||||||
|
|
||||||
let mut s = Search::new(&rtxn, &index);
|
let mut s = Search::new(&rtxn, &index);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Geo([0., 0.]))]);
|
||||||
|
|
||||||
s.query("jean");
|
s.query("jean");
|
||||||
let ids = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
let (ids, scores) = execute_iterative_and_rtree_returns_the_same(&rtxn, &index, &mut s);
|
||||||
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 2, 3]");
|
insta::assert_snapshot!(format!("{ids:?}"), @"[0, 2, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{scores:#?}"));
|
||||||
}
|
}
|
||||||
|
@ -80,10 +80,13 @@ fn test_2gram_simple() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("sun flower");
|
s.query("sun flower");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
// will also match documents with "sunflower" + prefix tolerance
|
// will also match documents with "sunflower" + prefix tolerance
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1, 2, 3, 5]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1, 2, 3, 5]");
|
||||||
|
// scores are empty because the only rule is Words with All matching strategy
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[], [], [], [], []]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
|
@ -124,6 +124,8 @@ fn create_edge_cases_index() -> TempIndex {
|
|||||||
},
|
},
|
||||||
// The next 5 documents lay out a trap with the split word, phrase search, or synonym `sun flower`.
|
// The next 5 documents lay out a trap with the split word, phrase search, or synonym `sun flower`.
|
||||||
// If the search query is "sunflower", the split word "Sun Flower" will match some documents.
|
// If the search query is "sunflower", the split word "Sun Flower" will match some documents.
|
||||||
|
// The next 5 documents lay out a trap with the split word, phrase search, or synonym `sun flower`.
|
||||||
|
// If the search query is "sunflower", the split word "Sun Flower" will match some documents.
|
||||||
// If the query is `sunflower wilting`, then we should make sure that
|
// If the query is `sunflower wilting`, then we should make sure that
|
||||||
// the proximity condition `flower wilting: sprx N` also comes with the condition
|
// the proximity condition `flower wilting: sprx N` also comes with the condition
|
||||||
// `sun wilting: sprx N+1`, but this is not the exact condition we use for now.
|
// `sun wilting: sprx N+1`, but this is not the exact condition we use for now.
|
||||||
@ -140,6 +142,7 @@ fn create_edge_cases_index() -> TempIndex {
|
|||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
// This document matches the query `sunflower wilting`, but the sprximity condition
|
// This document matches the query `sunflower wilting`, but the sprximity condition
|
||||||
|
// This document matches the query `sunflower wilting`, but the sprximity condition
|
||||||
// between `sunflower` and `wilting` cannot be through the split-word `Sun Flower`
|
// between `sunflower` and `wilting` cannot be through the split-word `Sun Flower`
|
||||||
// which would reduce to only `flower` and `wilting` being in sprximity.
|
// which would reduce to only `flower` and `wilting` being in sprximity.
|
||||||
"text": "A flower wilting under the sun, unlike a sunflower"
|
"text": "A flower wilting under the sun, unlike a sunflower"
|
||||||
@ -295,9 +298,12 @@ fn test_proximity_split_word() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("sunflower wilting");
|
s.query("sunflower wilting");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 4, 5, 1, 3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 4, 5, 1, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
|
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
// "2" and "4" should be swapped ideally
|
// "2" and "4" should be swapped ideally
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
@ -312,9 +318,11 @@ fn test_proximity_split_word() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("\"sun flower\" wilting");
|
s.query("\"sun flower\" wilting");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 4, 1]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 4, 1]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
// "2" and "4" should be swapped ideally
|
// "2" and "4" should be swapped ideally
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
@ -337,9 +345,11 @@ fn test_proximity_split_word() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("xyz wilting");
|
s.query("xyz wilting");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 4, 1]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 4, 1]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
// "2" and "4" should be swapped ideally
|
// "2" and "4" should be swapped ideally
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
@ -358,9 +368,11 @@ fn test_proximity_prefix_db() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("best s");
|
s.query("best s");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 13, 9, 12, 8, 6, 7, 11, 15]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 13, 9, 12, 8, 6, 7, 11, 15]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
// This test illustrates the loss of precision from using the prefix DB
|
// This test illustrates the loss of precision from using the prefix DB
|
||||||
@ -381,9 +393,11 @@ fn test_proximity_prefix_db() {
|
|||||||
// Difference when using the `su` prefix, which is not in the prefix DB
|
// Difference when using the `su` prefix, which is not in the prefix DB
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("best su");
|
s.query("best su");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 13, 9, 12, 8, 11, 7, 6, 15]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 13, 9, 12, 8, 11, 7, 6, 15]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
@ -406,9 +420,11 @@ fn test_proximity_prefix_db() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("best win");
|
s.query("best win");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[15, 16, 17, 18, 19, 20, 21, 22]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[15, 16, 17, 18, 19, 20, 21, 22]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
@ -428,9 +444,11 @@ fn test_proximity_prefix_db() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("best wint");
|
s.query("best wint");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[19, 22, 18, 21, 17, 20, 16, 15]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[19, 22, 18, 21, 17, 20, 16, 15]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
@ -450,9 +468,11 @@ fn test_proximity_prefix_db() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("best wi");
|
s.query("best wi");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[19, 22, 18, 21, 17, 15, 16, 20]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[19, 22, 18, 21, 17, 15, 16, 20]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
|
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
|
@ -60,8 +60,41 @@ fn test_trap_basic() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("summer holiday");
|
s.query("summer holiday");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
// This is incorrect, 1 should come before 0
|
// This is incorrect, 1 should come before 0
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
|
@ -0,0 +1,244 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/attribute_fid.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 91,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 81,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 14,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 79,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 13,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 77,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 12,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 83,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 75,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 79,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 73,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
11,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 77,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
10,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 81,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
13,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 81,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
12,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 78,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
14,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 75,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 91,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,244 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/attribute_fid.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 91,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 81,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 14,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 79,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 13,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 77,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 12,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 83,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 75,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 79,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 73,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
11,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 77,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
10,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 81,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
13,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 81,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
12,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 78,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
14,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 75,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 19,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 91,
|
||||||
|
max_rank: 91,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,244 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/attribute_position.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
10,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 21,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
12,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 21,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
11,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 20,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
13,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 20,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 18,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 13,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,244 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/attribute_position.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
10,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 21,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
12,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 21,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
11,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 20,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
13,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 20,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 18,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 13,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/attribute_position.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 51,
|
||||||
|
max_rank: 51,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 51,
|
||||||
|
max_rank: 51,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 51,
|
||||||
|
max_rank: 51,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 51,
|
||||||
|
max_rank: 51,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 50,
|
||||||
|
max_rank: 51,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,244 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/attribute_position.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
10,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 21,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
12,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 21,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
11,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 20,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
13,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 20,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 18,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 13,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,366 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
19,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
18,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 9,
|
||||||
|
max_rank: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
17,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
16,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
15,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
14,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
13,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
12,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
11,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,106 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,126 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,136 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,186 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 9,
|
||||||
|
max_rank: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,126 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,146 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,146 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,84 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 35,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 35,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 35,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,240 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 57,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 56,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 35,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 22,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 22,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 22,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 21,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 17,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 17,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,110 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,366 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/exactness.rs
|
||||||
|
expression: "format!(\"{document_ids_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
(
|
||||||
|
19,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 10,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
9,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 10,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
18,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 9,
|
||||||
|
max_rank: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
8,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
17,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
16,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
15,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
14,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
13,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
12,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
11,
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
ExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,168 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
2.0,
|
||||||
|
-1.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-2.0,
|
||||||
|
-2.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
3.0,
|
||||||
|
5.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
6.0,
|
||||||
|
-5.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,168 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
6.0,
|
||||||
|
-5.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
3.0,
|
||||||
|
5.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-2.0,
|
||||||
|
-2.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
2.0,
|
||||||
|
-1.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
-175.0,
|
||||||
|
],
|
||||||
|
ascending: false,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
-85.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
-179.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
88.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
175.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,75 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
-89.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: Some(
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
178.0,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/geo_sort.rs
|
||||||
|
expression: "format!(\"{scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
GeoSort(
|
||||||
|
GeoSort {
|
||||||
|
target_point: [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
ascending: true,
|
||||||
|
value: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,78 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,78 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,206 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/sort.rs
|
||||||
|
expression: document_scores_json
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": 1.0
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": 1.0
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": 1.0
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": 1.1367
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": 1.2367
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": 1.5673
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": "false"
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": "false"
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": "true"
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": "true"
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vague:asc": {
|
||||||
|
"order": 0,
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"<hidden-rule-1>": {
|
||||||
|
"order": 1,
|
||||||
|
"value": "<hidden>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,206 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/sort.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(2.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.5673),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.2367),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.1367),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(0.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("true"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("true"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("false"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("false"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("1"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("0"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,206 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/sort.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("i"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("i"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("i"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("h"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("g"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("g"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("f"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("f"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("f"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("e"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("e"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("e"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("e"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("e"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("e"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("d"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("c"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("c"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("c"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "letter",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: String("b"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,206 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/sort.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(5.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(4.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(3.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(2.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(2.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(2.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(2.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(2.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(0.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(0.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(0.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(0.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "rank",
|
||||||
|
ascending: false,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(0.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,206 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/sort.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(0.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.0),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.1367),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.2367),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Number(1.5673),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: String("0"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: String("1"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: String("false"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: String("false"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: String("true"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: String("true"),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Sort(
|
||||||
|
Sort {
|
||||||
|
field_name: "vague",
|
||||||
|
ascending: true,
|
||||||
|
redacted: false,
|
||||||
|
value: Null,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,129 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/stop_words.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 31,
|
||||||
|
max_rank: 31,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 31,
|
||||||
|
max_rank: 31,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 27,
|
||||||
|
max_rank: 31,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/stop_words.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
]
|
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
]
|
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 5,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 3,
|
||||||
|
max_typo_count: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 4,
|
||||||
|
max_typo_count: 6,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
]
|
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
]
|
@ -0,0 +1,244 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,244 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 7,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 13,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 13,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 13,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 13,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 13,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 2,
|
||||||
|
max_typo_count: 13,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,62 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo_proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 5,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/typo_proximity.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 1,
|
||||||
|
max_typo_count: 5,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,216 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 50,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 50,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 49,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 49,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 48,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 41,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 40,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 43,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 36,
|
||||||
|
max_rank: 36,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 31,
|
||||||
|
max_rank: 36,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 22,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 8,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,160 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 43,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 43,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 42,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 42,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 41,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 34,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 33,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 36,
|
||||||
|
max_rank: 36,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 29,
|
||||||
|
max_rank: 29,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 24,
|
||||||
|
max_rank: 29,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,286 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 57,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 57,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 56,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 56,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 55,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 54,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 53,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 52,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 51,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 48,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 47,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 50,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 43,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 38,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 29,
|
||||||
|
max_rank: 29,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 22,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 22,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 22,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 15,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,286 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 57,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 56,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 55,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 54,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 54,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 54,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 53,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 53,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 52,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 47,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 45,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 47,
|
||||||
|
max_rank: 50,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 40,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 35,
|
||||||
|
max_rank: 43,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 26,
|
||||||
|
max_rank: 29,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 19,
|
||||||
|
max_rank: 22,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 13,
|
||||||
|
max_rank: 15,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,102 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 57,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 57,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 56,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 56,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 55,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 54,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 53,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 52,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 51,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 48,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 47,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 57,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -0,0 +1,166 @@
|
|||||||
|
---
|
||||||
|
source: milli/src/search/new/tests/words_tms.rs
|
||||||
|
expression: "format!(\"{document_scores:#?}\")"
|
||||||
|
---
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 9,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 8,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 7,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 5,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 9,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
@ -16,7 +16,9 @@ use maplit::hashset;
|
|||||||
|
|
||||||
use crate::index::tests::TempIndex;
|
use crate::index::tests::TempIndex;
|
||||||
use crate::search::new::tests::collect_field_values;
|
use crate::search::new::tests::collect_field_values;
|
||||||
use crate::{AscDesc, Criterion, Member, Search, SearchResult, TermsMatchingStrategy};
|
use crate::{
|
||||||
|
score_details, AscDesc, Criterion, Member, Search, SearchResult, TermsMatchingStrategy,
|
||||||
|
};
|
||||||
|
|
||||||
fn create_index() -> TempIndex {
|
fn create_index() -> TempIndex {
|
||||||
let index = TempIndex::new();
|
let index = TempIndex::new();
|
||||||
@ -183,10 +185,12 @@ fn test_sort() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Field(S("letter")))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Field(S("letter")))]);
|
||||||
|
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[21, 22, 23, 20, 18, 19, 15, 16, 17, 9, 10, 11, 12, 13, 14, 8, 5, 6, 7, 2]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[21, 22, 23, 20, 18, 19, 15, 16, 17, 9, 10, 11, 12, 13, 14, 8, 5, 6, 7, 2]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
|
|
||||||
let letter_values = collect_field_values(&index, &txn, "letter", &documents_ids);
|
let letter_values = collect_field_values(&index, &txn, "letter", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(letter_values, @r###"
|
insta::assert_debug_snapshot!(letter_values, @r###"
|
||||||
@ -216,10 +220,12 @@ fn test_sort() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Field(S("rank")))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Field(S("rank")))]);
|
||||||
|
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[14, 13, 12, 4, 7, 11, 17, 23, 1, 3, 6, 10, 16, 19, 22, 0, 2, 5, 8, 9]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[14, 13, 12, 4, 7, 11, 17, 23, 1, 3, 6, 10, 16, 19, 22, 0, 2, 5, 8, 9]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
|
|
||||||
let rank_values = collect_field_values(&index, &txn, "rank", &documents_ids);
|
let rank_values = collect_field_values(&index, &txn, "rank", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(rank_values, @r###"
|
insta::assert_debug_snapshot!(rank_values, @r###"
|
||||||
@ -249,10 +255,12 @@ fn test_sort() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.sort_criteria(vec![AscDesc::Asc(Member::Field(S("vague")))]);
|
s.sort_criteria(vec![AscDesc::Asc(Member::Field(S("vague")))]);
|
||||||
|
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 2, 4, 5, 22, 23, 13, 1, 3, 12, 21, 11, 20, 6, 7, 8, 9, 10, 14, 15]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 2, 4, 5, 22, 23, 13, 1, 3, 12, 21, 11, 20, 6, 7, 8, 9, 10, 14, 15]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
|
|
||||||
let vague_values = collect_field_values(&index, &txn, "vague", &documents_ids);
|
let vague_values = collect_field_values(&index, &txn, "vague", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(vague_values, @r###"
|
insta::assert_debug_snapshot!(vague_values, @r###"
|
||||||
@ -282,10 +290,12 @@ fn test_sort() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.sort_criteria(vec![AscDesc::Desc(Member::Field(S("vague")))]);
|
s.sort_criteria(vec![AscDesc::Desc(Member::Field(S("vague")))]);
|
||||||
|
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[4, 13, 23, 22, 2, 5, 0, 11, 20, 12, 21, 3, 1, 6, 7, 8, 9, 10, 14, 15]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[4, 13, 23, 22, 2, 5, 0, 11, 20, 12, 21, 3, 1, 6, 7, 8, 9, 10, 14, 15]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
|
|
||||||
let vague_values = collect_field_values(&index, &txn, "vague", &documents_ids);
|
let vague_values = collect_field_values(&index, &txn, "vague", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(vague_values, @r###"
|
insta::assert_debug_snapshot!(vague_values, @r###"
|
||||||
@ -313,3 +323,33 @@ fn test_sort() {
|
|||||||
]
|
]
|
||||||
"###);
|
"###);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_redacted() {
|
||||||
|
let index = create_index();
|
||||||
|
index
|
||||||
|
.update_settings(|s| {
|
||||||
|
s.set_displayed_fields(vec!["text".to_owned(), "vague".to_owned()]);
|
||||||
|
s.set_sortable_fields(hashset! { S("rank"), S("vague"), S("letter") });
|
||||||
|
s.set_criteria(vec![Criterion::Sort]);
|
||||||
|
})
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let txn = index.read_txn().unwrap();
|
||||||
|
|
||||||
|
let mut s = Search::new(&txn, &index);
|
||||||
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
s.sort_criteria(vec![
|
||||||
|
AscDesc::Asc(Member::Field(S("vague"))),
|
||||||
|
AscDesc::Asc(Member::Field(S("letter"))),
|
||||||
|
]);
|
||||||
|
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
let document_scores_json: Vec<_> = document_scores
|
||||||
|
.iter()
|
||||||
|
.map(|scores| score_details::ScoreDetails::to_json_map(scores.iter()))
|
||||||
|
.collect();
|
||||||
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 2, 4, 5, 22, 23, 13, 1, 3, 12, 21, 11, 20, 6, 7, 8, 9, 10, 14, 15]");
|
||||||
|
insta::assert_json_snapshot!(document_scores_json);
|
||||||
|
}
|
||||||
|
@ -81,28 +81,212 @@ fn test_ignore_stop_words() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("xyz to the");
|
s.query("xyz to the");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 9,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
|
|
||||||
// `xyz` is treated as a prefix here, so it's not ignored
|
// `xyz` is treated as a prefix here, so it's not ignored
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("to the xyz");
|
s.query("to the xyz");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 9,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
|
|
||||||
// `xyz` is not treated as a prefix anymore because of the trailing space, so it's ignored
|
// `xyz` is not treated as a prefix anymore because of the trailing space, so it's ignored
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("to the xyz ");
|
s.query("to the xyz ");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 1,
|
||||||
|
max_matching_words: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 9,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("to the dragon xyz");
|
s.query("to the dragon xyz");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 2,
|
||||||
|
max_matching_words: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 7,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 17,
|
||||||
|
max_rank: 21,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 3,
|
||||||
|
max_rank: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -114,24 +298,163 @@ fn test_stop_words_in_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("\"how to train your dragon\"");
|
s.query("\"how to train your dragon\"");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3, 6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3, 6]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 0,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 4,
|
||||||
|
max_matching_words: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 0,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 11,
|
||||||
|
max_rank: 11,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
MatchesStart,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 2,
|
||||||
|
max_rank: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("how \"to\" train \"the");
|
s.query("how \"to\" train \"the");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[
|
||||||
|
Words(
|
||||||
|
Words {
|
||||||
|
matching_words: 3,
|
||||||
|
max_matching_words: 3,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Typo(
|
||||||
|
Typo {
|
||||||
|
typo_count: 0,
|
||||||
|
max_typo_count: 2,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Proximity(
|
||||||
|
Rank {
|
||||||
|
rank: 6,
|
||||||
|
max_rank: 8,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Fid(
|
||||||
|
Rank {
|
||||||
|
rank: 1,
|
||||||
|
max_rank: 1,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Position(
|
||||||
|
Rank {
|
||||||
|
rank: 29,
|
||||||
|
max_rank: 31,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ExactAttribute(
|
||||||
|
NoExactMatch,
|
||||||
|
),
|
||||||
|
Exactness(
|
||||||
|
Rank {
|
||||||
|
rank: 4,
|
||||||
|
max_rank: 4,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("how \"to\" train \"The dragon");
|
s.query("how \"to\" train \"The dragon");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3, 6, 5]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3, 6, 5]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("\"to\"");
|
s.query("\"to\"");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1, 2, 3, 4, 5, 6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 1, 2, 3, 4, 5, 6]");
|
||||||
|
// The search is handled as a placeholder search because it doesn't have any non-stop words in it.
|
||||||
|
// As a result the scores are empty lists
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
}
|
}
|
||||||
|
@ -160,8 +160,9 @@ fn test_no_typo() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -184,8 +185,14 @@ fn test_default_typo() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 23]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 23]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -198,8 +205,9 @@ fn test_default_typo() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quack brown fox jumps over the lazy dog");
|
s.query("the quack brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -211,8 +219,9 @@ fn test_default_typo() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quicest brownest fox jummps over the laziest dog");
|
s.query("the quicest brownest fox jummps over the laziest dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -229,8 +238,9 @@ fn test_phrase_no_typo_allowed() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the \"quick brewn\" fox jumps over the lazy dog");
|
s.query("the \"quick brewn\" fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @"[]");
|
insta::assert_debug_snapshot!(texts, @"[]");
|
||||||
}
|
}
|
||||||
@ -258,8 +268,9 @@ fn test_typo_exact_word() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -271,15 +282,17 @@ fn test_typo_exact_word() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quack brown fox jumps over the lazy dog");
|
s.query("the quack brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[]");
|
||||||
|
|
||||||
// words not in exact_words (quicest, jummps) have normal typo handling
|
// words not in exact_words (quicest, jummps) have normal typo handling
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("the quicest brownest fox jummps over the laziest dog");
|
s.query("the quicest brownest fox jummps over the laziest dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[3]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -290,9 +303,11 @@ fn test_typo_exact_word() {
|
|||||||
// exact words do not disable prefix (sunflowering OK, but no sunflowar)
|
// exact words do not disable prefix (sunflowering OK, but no sunflowar)
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("network interconnection sunflower");
|
s.query("network interconnection sunflower");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[16, 17, 18]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[16, 17, 18]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -327,9 +342,11 @@ fn test_typo_exact_attribute() {
|
|||||||
// Exact match returns both exact attributes and tolerant ones.
|
// Exact match returns both exact attributes and tolerant ones.
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 24, 25]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 24, 25]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -350,9 +367,16 @@ fn test_typo_exact_attribute() {
|
|||||||
// 1 typo only returns the tolerant attribute
|
// 1 typo only returns the tolerant attribute
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the quidk brown fox jumps over the lazy dog");
|
s.query("the quidk brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[24, 25]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[24, 25]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
let texts = collect_field_values(&index, &txn, "tolerant_text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "tolerant_text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -364,9 +388,16 @@ fn test_typo_exact_attribute() {
|
|||||||
// combine with exact words
|
// combine with exact words
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the quivk brown fox jumps over the lazy dog");
|
s.query("the quivk brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[23, 25]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[23, 25]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @r###"
|
||||||
|
[
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
]
|
||||||
|
"###);
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -385,9 +416,11 @@ fn test_typo_exact_attribute() {
|
|||||||
// No result in tolerant attribute
|
// No result in tolerant attribute
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the quicest brownest fox jummps over the laziest dog");
|
s.query("the quicest brownest fox jummps over the laziest dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[]");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -397,9 +430,11 @@ fn test_ngram_typos() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the extra lagant fox skyrocketed over the languorous dog");
|
s.query("the extra lagant fox skyrocketed over the languorous dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[6]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -409,9 +444,11 @@ fn test_ngram_typos() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the ex tra lagant fox skyrocketed over the languorous dog");
|
s.query("the ex tra lagant fox skyrocketed over the languorous dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"), @"[]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @"[]");
|
insta::assert_debug_snapshot!(texts, @"[]");
|
||||||
}
|
}
|
||||||
@ -428,9 +465,11 @@ fn test_typo_ranking_rule_not_preceded_by_words_ranking_rule() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids: ids_1, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids: ids_1, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{ids_1:?}"), @"[0, 23, 7, 8, 9, 22, 10, 11, 1, 2, 12, 13, 4, 3, 5, 6, 21]");
|
insta::assert_snapshot!(format!("{ids_1:?}"), @"[0, 23, 7, 8, 9, 22, 10, 11, 1, 2, 12, 13, 4, 3, 5, 6, 21]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &ids_1);
|
let texts = collect_field_values(&index, &txn, "text", &ids_1);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -462,9 +501,11 @@ fn test_typo_ranking_rule_not_preceded_by_words_ranking_rule() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
let SearchResult { documents_ids: ids_2, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids: ids_2, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{ids_2:?}"), @"[0, 23, 7, 8, 9, 22, 10, 11, 1, 2, 12, 13, 4, 3, 5, 6, 21]");
|
insta::assert_snapshot!(format!("{ids_2:?}"), @"[0, 23, 7, 8, 9, 22, 10, 11, 1, 2, 12, 13, 4, 3, 5, 6, 21]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
|
|
||||||
assert_eq!(ids_1, ids_2);
|
assert_eq!(ids_1, ids_2);
|
||||||
}
|
}
|
||||||
@ -478,9 +519,11 @@ fn test_typo_bucketing() {
|
|||||||
// First do the search with just the Words ranking rule
|
// First do the search with just the Words ranking rule
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("network interconnection sunflower");
|
s.query("network interconnection sunflower");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[14, 15, 16, 17, 18, 20]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[14, 15, 16, 17, 18, 20]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -504,9 +547,11 @@ fn test_typo_bucketing() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("network interconnection sunflower");
|
s.query("network interconnection sunflower");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[16, 18, 17, 20, 15, 14]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[16, 18, 17, 20, 15, 14]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -521,9 +566,11 @@ fn test_typo_bucketing() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("network interconnection sun flower");
|
s.query("network interconnection sun flower");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[17, 19, 16, 18, 20, 15]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[17, 19, 16, 18, 20, 15]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -555,9 +602,11 @@ fn test_typo_synonyms() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the quick brown fox jumps over the lackadaisical dog");
|
s.query("the quick brown fox jumps over the lackadaisical dog");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 22, 23]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[0, 22, 23]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -569,12 +618,14 @@ fn test_typo_synonyms() {
|
|||||||
|
|
||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
s.query("the fast brownish fox jumps over the lackadaisical dog");
|
s.query("the fast brownish fox jumps over the lackadaisical dog");
|
||||||
|
|
||||||
// The interaction of ngrams + synonyms means that the multi-word synonyms end up having a typo cost.
|
// The interaction of ngrams + synonyms means that the multi-word synonyms end up having a typo cost.
|
||||||
// This is probably not what we want.
|
// This is probably not what we want.
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[21, 0, 22]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[21, 0, 22]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
|
@ -90,8 +90,10 @@ fn test_trap_basic_and_complex1() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("beautiful summer");
|
s.query("beautiful summer");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[1, 0, 3, 2]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[1, 0, 3, 2]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -111,8 +113,10 @@ fn test_trap_complex2() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
s.query("delicious sweet dessert");
|
s.query("delicious sweet dessert");
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[5, 4]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[5, 4]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
|
@ -134,10 +134,12 @@ fn test_words_tms_last_simple() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// 6 and 7 have the same score because "the" appears twice
|
// 6 and 7 have the same score because "the" appears twice
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 8, 6, 7, 5, 4, 11, 12, 3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 8, 6, 7, 5, 4, 11, 12, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -167,8 +169,10 @@ fn test_words_tms_last_simple() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("extravagant the quick brown fox jumps over the lazy dog");
|
s.query("extravagant the quick brown fox jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[]");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -179,10 +183,12 @@ fn test_words_tms_last_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("\"the quick brown fox\" jumps over the lazy dog");
|
s.query("\"the quick brown fox\" jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// "The quick brown fox" is a phrase, not deleted by this term matching strategy
|
// "The quick brown fox" is a phrase, not deleted by this term matching strategy
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 17, 21, 8, 6, 7, 5, 4, 11, 12]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 17, 21, 8, 6, 7, 5, 4, 11, 12]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -202,11 +208,13 @@ fn test_words_tms_last_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("\"the quick brown fox\" jumps over the \"lazy\" dog");
|
s.query("\"the quick brown fox\" jumps over the \"lazy\" dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// "lazy" is a phrase, not deleted by this term matching strategy
|
// "lazy" is a phrase, not deleted by this term matching strategy
|
||||||
// but words before it can be deleted
|
// but words before it can be deleted
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 17, 21, 8, 11, 12]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 17, 21, 8, 11, 12]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -222,10 +230,12 @@ fn test_words_tms_last_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("\"the quick brown fox jumps over the lazy dog\"");
|
s.query("\"the quick brown fox jumps over the lazy dog\"");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// The whole query is a phrase, no terms are removed
|
// The whole query is a phrase, no terms are removed
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[Words(Words { matching_words: 9, max_matching_words: 9 })]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -236,10 +246,12 @@ fn test_words_tms_last_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("\"the quick brown fox jumps over the lazy dog");
|
s.query("\"the quick brown fox jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// The whole query is still a phrase, even without closing quotes, so no terms are removed
|
// The whole query is still a phrase, even without closing quotes, so no terms are removed
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[[Words(Words { matching_words: 9, max_matching_words: 9 })]]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -261,10 +273,12 @@ fn test_words_proximity_tms_last_simple() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// 7 is better than 6 because of the proximity between "the" and its surrounding terms
|
// 7 is better than 6 because of the proximity between "the" and its surrounding terms
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 10, 18, 19, 20, 16, 15, 22, 8, 7, 6, 5, 4, 11, 12, 3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 10, 18, 19, 20, 16, 15, 22, 8, 7, 6, 5, 4, 11, 12, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -294,10 +308,12 @@ fn test_words_proximity_tms_last_simple() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("the brown quick fox jumps over the lazy dog");
|
s.query("the brown quick fox jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// 10 is better than 9 because of the proximity between "quick" and "brown"
|
// 10 is better than 9 because of the proximity between "quick" and "brown"
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 18, 19, 9, 20, 21, 14, 17, 13, 16, 15, 22, 8, 7, 6, 5, 4, 11, 12, 3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 18, 19, 9, 20, 21, 14, 17, 13, 16, 15, 22, 8, 7, 6, 5, 4, 11, 12, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -338,11 +354,13 @@ fn test_words_proximity_tms_last_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("the \"quick brown\" fox jumps over the lazy dog");
|
s.query("the \"quick brown\" fox jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// "quick brown" is a phrase. The proximity of its first and last words
|
// "quick brown" is a phrase. The proximity of its first and last words
|
||||||
// to their adjacent query words should be taken into account
|
// to their adjacent query words should be taken into account
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 16, 15, 8, 7, 6, 5, 4, 11, 12, 3]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 16, 15, 8, 7, 6, 5, 4, 11, 12, 3]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -367,12 +385,14 @@ fn test_words_proximity_tms_last_phrase() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("the \"quick brown\" \"fox jumps\" over the lazy dog");
|
s.query("the \"quick brown\" \"fox jumps\" over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
s.terms_matching_strategy(TermsMatchingStrategy::Last);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
// "quick brown" is a phrase. The proximity of its first and last words
|
// "quick brown" is a phrase. The proximity of its first and last words
|
||||||
// to their adjacent query words should be taken into account.
|
// to their adjacent query words should be taken into account.
|
||||||
// The same applies to `fox jumps`.
|
// The same applies to `fox jumps`.
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 16, 15, 8, 7, 6, 5]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 16, 15, 8, 7, 6, 5]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -404,9 +424,11 @@ fn test_words_tms_all() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("the quick brown fox jumps over the lazy dog");
|
s.query("the quick brown fox jumps over the lazy dog");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 10, 18, 19, 20, 16, 15, 22]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 21, 14, 17, 13, 10, 18, 19, 20, 16, 15, 22]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:#?}"));
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @r###"
|
insta::assert_debug_snapshot!(texts, @r###"
|
||||||
[
|
[
|
||||||
@ -428,9 +450,11 @@ fn test_words_tms_all() {
|
|||||||
let mut s = Search::new(&txn, &index);
|
let mut s = Search::new(&txn, &index);
|
||||||
s.query("extravagant");
|
s.query("extravagant");
|
||||||
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
s.terms_matching_strategy(TermsMatchingStrategy::All);
|
||||||
let SearchResult { documents_ids, .. } = s.execute().unwrap();
|
s.scoring_strategy(crate::score_details::ScoringStrategy::Detailed);
|
||||||
|
let SearchResult { documents_ids, document_scores, .. } = s.execute().unwrap();
|
||||||
|
|
||||||
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
insta::assert_snapshot!(format!("{documents_ids:?}"), @"[]");
|
||||||
|
insta::assert_snapshot!(format!("{document_scores:?}"), @"[]");
|
||||||
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
|
||||||
insta::assert_debug_snapshot!(texts, @"[]");
|
insta::assert_debug_snapshot!(texts, @"[]");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user