diff --git a/meilisearch/tests/search/formatted.rs b/meilisearch/tests/search/formatted.rs
index 8a40616a3..6347a90ca 100644
--- a/meilisearch/tests/search/formatted.rs
+++ b/meilisearch/tests/search/formatted.rs
@@ -1,3 +1,4 @@
+use insta::{allow_duplicates, assert_json_snapshot};
use serde_json::json;
use super::*;
@@ -18,30 +19,43 @@ async fn formatted_contain_wildcard() {
|response, code|
{
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "_formatted": {
- "id": "852",
- "cattos": "pésti",
- },
- "_matchesPosition": {"cattos": [{"start": 0, "length": 5}]},
- })
- );
- }
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "_formatted": {
+ "id": "852",
+ "cattos": "pésti"
+ },
+ "_matchesPosition": {
+ "cattos": [
+ {
+ "start": 0,
+ "length": 5
+ }
+ ]
+ }
+ }
+ "###);
+ }
+ }
)
.await;
index
.search(json!({ "q": "pésti", "attributesToRetrieve": ["*"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- "cattos": "pésti",
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852,
+ "cattos": "pésti"
+ }
+ "###)
+ }
})
.await;
@@ -50,20 +64,29 @@ async fn formatted_contain_wildcard() {
json!({ "q": "pésti", "attributesToRetrieve": ["*"], "attributesToHighlight": ["id"], "showMatchesPosition": true }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- "cattos": "pésti",
- "_formatted": {
- "id": "852",
- "cattos": "pésti",
- },
- "_matchesPosition": {"cattos": [{"start": 0, "length": 5}]},
- })
- );
- }
- )
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852,
+ "cattos": "pésti",
+ "_formatted": {
+ "id": "852",
+ "cattos": "pésti"
+ },
+ "_matchesPosition": {
+ "cattos": [
+ {
+ "start": 0,
+ "length": 5
+ }
+ ]
+ }
+ }
+ "###)
+ }
+ })
.await;
index
@@ -71,17 +94,20 @@ async fn formatted_contain_wildcard() {
json!({ "q": "pésti", "attributesToRetrieve": ["*"], "attributesToCrop": ["*"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- "cattos": "pésti",
- "_formatted": {
- "id": "852",
- "cattos": "pésti",
- }
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852,
+ "cattos": "pésti",
+ "_formatted": {
+ "id": "852",
+ "cattos": "pésti"
+ }
+ }
+ "###);
+ }
},
)
.await;
@@ -89,17 +115,20 @@ async fn formatted_contain_wildcard() {
index
.search(json!({ "q": "pésti", "attributesToCrop": ["*"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- "cattos": "pésti",
- "_formatted": {
- "id": "852",
- "cattos": "pésti",
- }
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852,
+ "cattos": "pésti",
+ "_formatted": {
+ "id": "852",
+ "cattos": "pésti"
+ }
+ }
+ "###)
+ }
})
.await;
}
@@ -116,21 +145,24 @@ async fn format_nested() {
index
.search(json!({ "q": "pésti", "attributesToRetrieve": ["doggos"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "doggos": [
- {
- "name": "bobby",
- "age": 2,
- },
- {
- "name": "buddy",
- "age": 4,
- },
- ],
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "doggos": [
+ {
+ "name": "bobby",
+ "age": 2
+ },
+ {
+ "name": "buddy",
+ "age": 4
+ }
+ ]
+ }
+ "###)
+ }
})
.await;
@@ -139,19 +171,22 @@ async fn format_nested() {
json!({ "q": "pésti", "attributesToRetrieve": ["doggos.name"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "doggos": [
- {
- "name": "bobby",
- },
- {
- "name": "buddy",
- },
- ],
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "doggos": [
+ {
+ "name": "bobby"
+ },
+ {
+ "name": "buddy"
+ }
+ ]
+ }
+ "###)
+ }
},
)
.await;
@@ -161,20 +196,30 @@ async fn format_nested() {
json!({ "q": "bobby", "attributesToRetrieve": ["doggos.name"], "showMatchesPosition": true }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "doggos": [
- {
- "name": "bobby",
- },
- {
- "name": "buddy",
- },
- ],
- "_matchesPosition": {"doggos.name": [{"start": 0, "length": 5}]},
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "doggos": [
+ {
+ "name": "bobby"
+ },
+ {
+ "name": "buddy"
+ }
+ ],
+ "_matchesPosition": {
+ "doggos.name": [
+ {
+ "start": 0,
+ "length": 5
+ }
+ ]
+ }
+ }
+ "###)
+ }
}
)
.await;
@@ -183,21 +228,24 @@ async fn format_nested() {
.search(json!({ "q": "pésti", "attributesToRetrieve": [], "attributesToHighlight": ["doggos.name"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "_formatted": {
- "doggos": [
- {
- "name": "bobby",
- },
- {
- "name": "buddy",
- },
- ],
- },
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "_formatted": {
+ "doggos": [
+ {
+ "name": "bobby"
+ },
+ {
+ "name": "buddy"
+ }
+ ]
+ }
+ }
+ "###)
+ }
})
.await;
@@ -205,21 +253,24 @@ async fn format_nested() {
.search(json!({ "q": "pésti", "attributesToRetrieve": [], "attributesToCrop": ["doggos.name"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "_formatted": {
- "doggos": [
- {
- "name": "bobby",
- },
- {
- "name": "buddy",
- },
- ],
- },
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "_formatted": {
+ "doggos": [
+ {
+ "name": "bobby"
+ },
+ {
+ "name": "buddy"
+ }
+ ]
+ }
+ }
+ "###)
+ }
})
.await;
@@ -227,55 +278,61 @@ async fn format_nested() {
.search(json!({ "q": "pésti", "attributesToRetrieve": ["doggos.name"], "attributesToHighlight": ["doggos.age"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "doggos": [
- {
- "name": "bobby",
- },
- {
- "name": "buddy",
- },
- ],
- "_formatted": {
- "doggos": [
- {
- "name": "bobby",
- "age": "2",
- },
- {
- "name": "buddy",
- "age": "4",
- },
- ],
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "doggos": [
+ {
+ "name": "bobby"
},
- })
- );
- })
+ {
+ "name": "buddy"
+ }
+ ],
+ "_formatted": {
+ "doggos": [
+ {
+ "name": "bobby",
+ "age": "2"
+ },
+ {
+ "name": "buddy",
+ "age": "4"
+ }
+ ]
+ }
+ }
+ "###)
+ }
+ })
.await;
index
.search(json!({ "q": "pésti", "attributesToRetrieve": [], "attributesToHighlight": ["doggos.age"], "attributesToCrop": ["doggos.name"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "_formatted": {
- "doggos": [
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
{
- "name": "bobby",
- "age": "2",
- },
- {
- "name": "buddy",
- "age": "4",
- },
- ],
- },
- })
- );
+ "_formatted": {
+ "doggos": [
+ {
+ "name": "bobby",
+ "age": "2"
+ },
+ {
+ "name": "buddy",
+ "age": "4"
+ }
+ ]
+ }
+ }
+ "###)
+ }
}
)
.await;
@@ -297,54 +354,66 @@ async fn displayedattr_2_smol() {
.search(json!({ "attributesToRetrieve": ["father", "id"], "attributesToHighlight": ["mother"], "attributesToCrop": ["cattos"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852
+ }
+ "###)
+ }
})
.await;
index
.search(json!({ "attributesToRetrieve": ["id"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852
+ }
+ "###)
+ }
})
.await;
index
.search(json!({ "attributesToHighlight": ["id"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- "_formatted": {
- "id": "852",
- }
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852,
+ "_formatted": {
+ "id": "852"
+ }
+ }
+ "###)
+ }
})
.await;
index
.search(json!({ "attributesToCrop": ["id"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- "_formatted": {
- "id": "852",
- }
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852,
+ "_formatted": {
+ "id": "852"
+ }
+ }
+ "###)
+ }
})
.await;
@@ -353,15 +422,18 @@ async fn displayedattr_2_smol() {
json!({ "attributesToHighlight": ["id"], "attributesToCrop": ["id"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- "_formatted": {
- "id": "852",
- }
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852,
+ "_formatted": {
+ "id": "852"
+ }
+ }
+ "###)
+ }
},
)
.await;
@@ -369,31 +441,41 @@ async fn displayedattr_2_smol() {
index
.search(json!({ "attributesToHighlight": ["cattos"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852
+ }
+ "###)
+ }
})
.await;
index
.search(json!({ "attributesToCrop": ["cattos"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "id": 852,
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "id": 852
+ }
+ "###)
+ }
})
.await;
index
.search(json!({ "attributesToRetrieve": ["cattos"] }), |response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(response["hits"][0], json!({}));
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @"{}")
+ }
})
.await;
@@ -402,7 +484,11 @@ async fn displayedattr_2_smol() {
json!({ "attributesToRetrieve": ["cattos"], "attributesToHighlight": ["cattos"], "attributesToCrop": ["cattos"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(response["hits"][0], json!({}));
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @"{}")
+ }
}
)
@@ -413,14 +499,17 @@ async fn displayedattr_2_smol() {
json!({ "attributesToRetrieve": ["cattos"], "attributesToHighlight": ["id"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "_formatted": {
- "id": "852",
- }
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "_formatted": {
+ "id": "852"
+ }
+ }
+ "###)
+ }
},
)
.await;
@@ -430,14 +519,17 @@ async fn displayedattr_2_smol() {
json!({ "attributesToRetrieve": ["cattos"], "attributesToCrop": ["id"] }),
|response, code| {
assert_eq!(code, 200, "{}", response);
- assert_eq!(
- response["hits"][0],
- json!({
- "_formatted": {
- "id": "852",
- }
- })
- );
+ allow_duplicates! {
+ assert_json_snapshot!(response["hits"][0],
+ { "._rankingScore" => "[score]" },
+ @r###"
+ {
+ "_formatted": {
+ "id": "852"
+ }
+ }
+ "###)
+ }
},
)
.await;
diff --git a/meilisearch/tests/search/multi.rs b/meilisearch/tests/search/multi.rs
index b00ddf3de..7cff42f3d 100644
--- a/meilisearch/tests/search/multi.rs
+++ b/meilisearch/tests/search/multi.rs
@@ -65,7 +65,7 @@ async fn simple_search_single_index() {
]}))
.await;
snapshot!(code, @"200 OK");
- insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]" }, @r###"
+ insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]", ".**._rankingScore" => "[score]" }, @r###"
[
{
"indexUid": "test",
@@ -170,7 +170,7 @@ async fn simple_search_two_indexes() {
]}))
.await;
snapshot!(code, @"200 OK");
- insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]" }, @r###"
+ insta::assert_json_snapshot!(response["results"], { "[].processingTimeMs" => "[time]", ".**._rankingScore" => "[score]" }, @r###"
[
{
"indexUid": "test",
diff --git a/milli/src/search/new/tests/attribute_fid.rs b/milli/src/search/new/tests/attribute_fid.rs
index 177dc393a..132595a35 100644
--- a/milli/src/search/new/tests/attribute_fid.rs
+++ b/milli/src/search/new/tests/attribute_fid.rs
@@ -123,7 +123,7 @@ fn test_attribute_fid_simple() {
s.terms_matching_strategy(TermsMatchingStrategy::All);
s.query("the quick brown fox jumps over the lazy dog");
let SearchResult { documents_ids, .. } = s.execute().unwrap();
- insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 7, 8, 11, 10, 12, 13, 14, 0]");
+ insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 8, 7, 11, 10, 13, 12, 14, 0]");
}
#[test]
@@ -136,5 +136,5 @@ fn test_attribute_fid_ngrams() {
s.terms_matching_strategy(TermsMatchingStrategy::All);
s.query("the quick brown fox jumps over the lazy dog");
let SearchResult { documents_ids, .. } = s.execute().unwrap();
- insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 7, 8, 11, 10, 12, 13, 14, 0]");
+ insta::assert_snapshot!(format!("{documents_ids:?}"), @"[2, 6, 5, 4, 3, 9, 8, 7, 11, 10, 13, 12, 14, 0]");
}
diff --git a/milli/src/search/new/tests/attribute_position.rs b/milli/src/search/new/tests/attribute_position.rs
index 37f303b10..5bbb5b117 100644
--- a/milli/src/search/new/tests/attribute_position.rs
+++ b/milli/src/search/new/tests/attribute_position.rs
@@ -138,7 +138,7 @@ fn test_attribute_position_simple() {
s.terms_matching_strategy(TermsMatchingStrategy::All);
s.query("quick brown");
let SearchResult { documents_ids, .. } = s.execute().unwrap();
- insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 11, 12, 13, 2, 3, 4, 1, 0, 6, 8, 7, 9, 5]");
+ insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]");
}
#[test]
fn test_attribute_position_repeated() {
@@ -163,7 +163,7 @@ fn test_attribute_position_different_fields() {
s.terms_matching_strategy(TermsMatchingStrategy::All);
s.query("quick brown");
let SearchResult { documents_ids, .. } = s.execute().unwrap();
- insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 11, 12, 13, 2, 3, 4, 1, 0, 6, 8, 7, 9, 5]");
+ insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]");
}
#[test]
@@ -176,5 +176,5 @@ fn test_attribute_position_ngrams() {
s.terms_matching_strategy(TermsMatchingStrategy::All);
s.query("quick brown");
let SearchResult { documents_ids, .. } = s.execute().unwrap();
- insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 11, 12, 13, 2, 3, 4, 1, 0, 6, 8, 7, 9, 5]");
+ insta::assert_snapshot!(format!("{documents_ids:?}"), @"[10, 12, 11, 13, 3, 4, 2, 0, 1, 6, 8, 7, 9, 5]");
}
diff --git a/milli/src/search/new/tests/proximity.rs b/milli/src/search/new/tests/proximity.rs
index 6e4181a95..5b369714c 100644
--- a/milli/src/search/new/tests/proximity.rs
+++ b/milli/src/search/new/tests/proximity.rs
@@ -270,13 +270,13 @@ fn test_proximity_simple() {
s.terms_matching_strategy(TermsMatchingStrategy::All);
s.query("the quick brown fox jumps over the lazy dog");
let SearchResult { documents_ids, .. } = s.execute().unwrap();
- insta::assert_snapshot!(format!("{documents_ids:?}"), @"[4, 9, 10, 7, 6, 5, 2, 3, 0, 1]");
+ insta::assert_snapshot!(format!("{documents_ids:?}"), @"[9, 10, 4, 7, 6, 5, 2, 3, 0, 1]");
let texts = collect_field_values(&index, &txn, "text", &documents_ids);
insta::assert_debug_snapshot!(texts, @r###"
[
- "\"the quickbrown fox jumps over the lazy dog\"",
"\"the quack brown fox jumps over the lazy dog\"",
"\"the quick brown fox jumps over the lazy dog\"",
+ "\"the quickbrown fox jumps over the lazy dog\"",
"\"the really quick brown fox jumps over the lazy dog\"",
"\"the really quick brown fox jumps over the very lazy dog\"",
"\"brown quick fox jumps over the lazy dog\"",
diff --git a/milli/tests/assets/test_set.ndjson b/milli/tests/assets/test_set.ndjson
index 175d9b3ce..351aac417 100644
--- a/milli/tests/assets/test_set.ndjson
+++ b/milli/tests/assets/test_set.ndjson
@@ -68,7 +68,7 @@
"word_rank": 0,
"typo_rank": 1,
"proximity_rank": 16,
- "attribute_rank": 208,
+ "attribute_rank": 209,
"exact_rank": 5,
"asc_desc_rank": 3,
"sort_by_rank": 2,
@@ -155,7 +155,7 @@
"word_rank": 1,
"typo_rank": 0,
"proximity_rank": 1,
- "attribute_rank": 1,
+ "attribute_rank": 2,
"exact_rank": 3,
"asc_desc_rank": 4,
"sort_by_rank": 1,
@@ -199,7 +199,7 @@
"word_rank": 1,
"typo_rank": 0,
"proximity_rank": 1,
- "attribute_rank": 2,
+ "attribute_rank": 1,
"exact_rank": 3,
"asc_desc_rank": 2,
"sort_by_rank": 1,
@@ -220,7 +220,7 @@
"word_rank": 0,
"typo_rank": 2,
"proximity_rank": 10,
- "attribute_rank": 209,
+ "attribute_rank": 208,
"exact_rank": 6,
"asc_desc_rank": 1,
"sort_by_rank": 2,