diff --git a/crates/meilisearch/tests/search/errors.rs b/crates/meilisearch/tests/search/errors.rs index 9dea42b12..c2014ca42 100644 --- a/crates/meilisearch/tests/search/errors.rs +++ b/crates/meilisearch/tests/search/errors.rs @@ -1,8 +1,10 @@ use meili_snap::*; -use crate::common::{shared_does_not_exists_index, Server}; +use crate::common::{shared_does_not_exists_index, Server, DOCUMENTS, NESTED_DOCUMENTS}; use crate::json; +use super::test_settings_documents_indexing_swapping_and_search; + #[actix_rt::test] async fn search_unexisting_index() { let index = shared_does_not_exists_index().await; @@ -422,6 +424,8 @@ async fn search_invalid_threshold() { async fn search_non_filterable_facets() { let server = Server::new_shared(); let index = server.unique_index(); + let (response, _code) = index.add_documents(json!([{"id": 1, "title": "Doggo"}]), None).await; + index.wait_task(response.uid()).await.succeeded(); let (response, _code) = index.update_settings(json!({"filterableAttributes": ["title"]})).await; // Wait for the settings update to complete index.wait_task(response.uid()).await.succeeded(); @@ -453,6 +457,9 @@ async fn search_non_filterable_facets() { async fn search_non_filterable_facets_multiple_filterable() { let server = Server::new_shared(); let index = server.unique_index(); + let (response, _code) = + index.add_documents(json!([{"id": 1, "title": "Doggo", "genres": "Action"}]), None).await; + index.wait_task(response.uid()).await.succeeded(); let (response, _code) = index.update_settings(json!({"filterableAttributes": ["title", "genres"]})).await; index.wait_task(response.uid()).await.succeeded(); @@ -514,6 +521,9 @@ async fn search_non_filterable_facets_no_filterable() { async fn search_non_filterable_facets_multiple_facets() { let server = Server::new_shared(); let index = server.unique_index(); + let (response, _code) = + index.add_documents(json!([{"id": 1, "title": "Doggo", "genres": "Action"}]), None).await; + index.wait_task(response.uid()).await.succeeded(); let (response, _uid) = index.update_settings(json!({"filterableAttributes": ["title", "genres"]})).await; index.wait_task(response.uid()).await.succeeded(); diff --git a/crates/meilisearch/tests/search/multi/mod.rs b/crates/meilisearch/tests/search/multi/mod.rs index 2a95a5dd2..e5c58268d 100644 --- a/crates/meilisearch/tests/search/multi/mod.rs +++ b/crates/meilisearch/tests/search/multi/mod.rs @@ -3604,22 +3604,28 @@ async fn federation_non_faceted_for_an_index() { let index = server.index("fruits"); + let documents = FRUITS_DOCUMENTS.clone(); + let (value, _) = index.add_documents(documents, None).await; + index.wait_task(value.uid()).await.succeeded(); + let (value, _) = index .update_settings( json!({"searchableAttributes": ["name"], "filterableAttributes": ["BOOST", "id", "name"]}), ) .await; - index.wait_task(value.uid()).await.succeeded(); let index = server.index("fruits-no-name"); + let documents = FRUITS_DOCUMENTS.clone(); + let (value, _) = index.add_documents(documents, None).await; + index.wait_task(value.uid()).await.succeeded(); + let (value, _) = index .update_settings( json!({"searchableAttributes": ["name"], "filterableAttributes": ["BOOST", "id"]}), ) .await; - index.wait_task(value.uid()).await.succeeded(); let index = server.index("fruits-no-facets"); diff --git a/crates/milli/src/index.rs b/crates/milli/src/index.rs index 12b98b729..ff87eba7c 100644 --- a/crates/milli/src/index.rs +++ b/crates/milli/src/index.rs @@ -2978,7 +2978,9 @@ pub(crate) mod tests { index .update_settings(|settings| { settings.set_searchable_fields(vec![S("name")]); - settings.set_filterable_fields(HashSet::from([S("age")])); + settings.set_filterable_fields(vec![FilterableAttributesRule::Field( + "age".to_string(), + )]); }) .unwrap(); @@ -2986,35 +2988,37 @@ pub(crate) mod tests { .add_documents(documents!({ "id": 1, "name": "Many", "age": 28, "realName": "Maxime" })) .unwrap(); db_snap!(index, fields_ids_map, @r###" - 0 name | - 1 id | + 0 id | + 1 name | 2 age | 3 realName | "###); db_snap!(index, searchable_fields, @r###"["name"]"###); db_snap!(index, fieldids_weights_map, @r###" fid weight - 0 0 | + 1 0 | "###); index .update_settings(|settings| { settings.set_searchable_fields(vec![S("name"), S("realName")]); - settings.set_filterable_fields(HashSet::from([S("age")])); + settings.set_filterable_fields(vec![FilterableAttributesRule::Field( + "age".to_string(), + )]); }) .unwrap(); // The order of the field id map shouldn't change db_snap!(index, fields_ids_map, @r###" - 0 name | - 1 id | + 0 id | + 1 name | 2 age | 3 realName | "###); db_snap!(index, searchable_fields, @r###"["name", "realName"]"###); db_snap!(index, fieldids_weights_map, @r###" fid weight - 0 0 | + 1 0 | 3 1 | "###); } @@ -3099,14 +3103,16 @@ pub(crate) mod tests { index .update_settings(|settings| { settings.set_searchable_fields(vec![S("_vectors"), S("_vectors.doggo")]); - settings.set_filterable_fields(hashset![S("_vectors"), S("_vectors.doggo")]); + settings.set_filterable_fields(vec![ + FilterableAttributesRule::Field("_vectors".to_string()), + FilterableAttributesRule::Field("_vectors.doggo".to_string()), + ]); }) .unwrap(); db_snap!(index, fields_ids_map, @r###" 0 id | 1 _vectors | - 2 _vectors.doggo | "###); db_snap!(index, searchable_fields, @"[]"); db_snap!(index, fieldids_weights_map, @r###" @@ -3139,7 +3145,6 @@ pub(crate) mod tests { db_snap!(index, fields_ids_map, @r###" 0 id | 1 _vectors | - 2 _vectors.doggo | "###); db_snap!(index, searchable_fields, @"[]"); db_snap!(index, fieldids_weights_map, @r###"