mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-03-06 22:02:34 +08:00
Index document in filterable attributes tests
**Reason:** Because the filterable attributes are patterns now, the fieldIdMap will only register the fields that exists in at least one document. if a field doesn't exist in any document, it will not be registered even if it has been specified in the filterable fields.
This commit is contained in:
parent
9a75dc6ab3
commit
6dbec91d2b
@ -1,8 +1,10 @@
|
|||||||
use meili_snap::*;
|
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 crate::json;
|
||||||
|
|
||||||
|
use super::test_settings_documents_indexing_swapping_and_search;
|
||||||
|
|
||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn search_unexisting_index() {
|
async fn search_unexisting_index() {
|
||||||
let index = shared_does_not_exists_index().await;
|
let index = shared_does_not_exists_index().await;
|
||||||
@ -422,6 +424,8 @@ async fn search_invalid_threshold() {
|
|||||||
async fn search_non_filterable_facets() {
|
async fn search_non_filterable_facets() {
|
||||||
let server = Server::new_shared();
|
let server = Server::new_shared();
|
||||||
let index = server.unique_index();
|
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;
|
let (response, _code) = index.update_settings(json!({"filterableAttributes": ["title"]})).await;
|
||||||
// Wait for the settings update to complete
|
// Wait for the settings update to complete
|
||||||
index.wait_task(response.uid()).await.succeeded();
|
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() {
|
async fn search_non_filterable_facets_multiple_filterable() {
|
||||||
let server = Server::new_shared();
|
let server = Server::new_shared();
|
||||||
let index = server.unique_index();
|
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) =
|
let (response, _code) =
|
||||||
index.update_settings(json!({"filterableAttributes": ["title", "genres"]})).await;
|
index.update_settings(json!({"filterableAttributes": ["title", "genres"]})).await;
|
||||||
index.wait_task(response.uid()).await.succeeded();
|
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() {
|
async fn search_non_filterable_facets_multiple_facets() {
|
||||||
let server = Server::new_shared();
|
let server = Server::new_shared();
|
||||||
let index = server.unique_index();
|
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) =
|
let (response, _uid) =
|
||||||
index.update_settings(json!({"filterableAttributes": ["title", "genres"]})).await;
|
index.update_settings(json!({"filterableAttributes": ["title", "genres"]})).await;
|
||||||
index.wait_task(response.uid()).await.succeeded();
|
index.wait_task(response.uid()).await.succeeded();
|
||||||
|
@ -3604,22 +3604,28 @@ async fn federation_non_faceted_for_an_index() {
|
|||||||
|
|
||||||
let index = server.index("fruits");
|
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
|
let (value, _) = index
|
||||||
.update_settings(
|
.update_settings(
|
||||||
json!({"searchableAttributes": ["name"], "filterableAttributes": ["BOOST", "id", "name"]}),
|
json!({"searchableAttributes": ["name"], "filterableAttributes": ["BOOST", "id", "name"]}),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
index.wait_task(value.uid()).await.succeeded();
|
index.wait_task(value.uid()).await.succeeded();
|
||||||
|
|
||||||
let index = server.index("fruits-no-name");
|
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
|
let (value, _) = index
|
||||||
.update_settings(
|
.update_settings(
|
||||||
json!({"searchableAttributes": ["name"], "filterableAttributes": ["BOOST", "id"]}),
|
json!({"searchableAttributes": ["name"], "filterableAttributes": ["BOOST", "id"]}),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
index.wait_task(value.uid()).await.succeeded();
|
index.wait_task(value.uid()).await.succeeded();
|
||||||
|
|
||||||
let index = server.index("fruits-no-facets");
|
let index = server.index("fruits-no-facets");
|
||||||
|
@ -2978,7 +2978,9 @@ pub(crate) mod tests {
|
|||||||
index
|
index
|
||||||
.update_settings(|settings| {
|
.update_settings(|settings| {
|
||||||
settings.set_searchable_fields(vec![S("name")]);
|
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();
|
.unwrap();
|
||||||
|
|
||||||
@ -2986,35 +2988,37 @@ pub(crate) mod tests {
|
|||||||
.add_documents(documents!({ "id": 1, "name": "Many", "age": 28, "realName": "Maxime" }))
|
.add_documents(documents!({ "id": 1, "name": "Many", "age": 28, "realName": "Maxime" }))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
db_snap!(index, fields_ids_map, @r###"
|
db_snap!(index, fields_ids_map, @r###"
|
||||||
0 name |
|
0 id |
|
||||||
1 id |
|
1 name |
|
||||||
2 age |
|
2 age |
|
||||||
3 realName |
|
3 realName |
|
||||||
"###);
|
"###);
|
||||||
db_snap!(index, searchable_fields, @r###"["name"]"###);
|
db_snap!(index, searchable_fields, @r###"["name"]"###);
|
||||||
db_snap!(index, fieldids_weights_map, @r###"
|
db_snap!(index, fieldids_weights_map, @r###"
|
||||||
fid weight
|
fid weight
|
||||||
0 0 |
|
1 0 |
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
index
|
index
|
||||||
.update_settings(|settings| {
|
.update_settings(|settings| {
|
||||||
settings.set_searchable_fields(vec![S("name"), S("realName")]);
|
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();
|
.unwrap();
|
||||||
|
|
||||||
// The order of the field id map shouldn't change
|
// The order of the field id map shouldn't change
|
||||||
db_snap!(index, fields_ids_map, @r###"
|
db_snap!(index, fields_ids_map, @r###"
|
||||||
0 name |
|
0 id |
|
||||||
1 id |
|
1 name |
|
||||||
2 age |
|
2 age |
|
||||||
3 realName |
|
3 realName |
|
||||||
"###);
|
"###);
|
||||||
db_snap!(index, searchable_fields, @r###"["name", "realName"]"###);
|
db_snap!(index, searchable_fields, @r###"["name", "realName"]"###);
|
||||||
db_snap!(index, fieldids_weights_map, @r###"
|
db_snap!(index, fieldids_weights_map, @r###"
|
||||||
fid weight
|
fid weight
|
||||||
0 0 |
|
1 0 |
|
||||||
3 1 |
|
3 1 |
|
||||||
"###);
|
"###);
|
||||||
}
|
}
|
||||||
@ -3099,14 +3103,16 @@ pub(crate) mod tests {
|
|||||||
index
|
index
|
||||||
.update_settings(|settings| {
|
.update_settings(|settings| {
|
||||||
settings.set_searchable_fields(vec![S("_vectors"), S("_vectors.doggo")]);
|
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();
|
.unwrap();
|
||||||
|
|
||||||
db_snap!(index, fields_ids_map, @r###"
|
db_snap!(index, fields_ids_map, @r###"
|
||||||
0 id |
|
0 id |
|
||||||
1 _vectors |
|
1 _vectors |
|
||||||
2 _vectors.doggo |
|
|
||||||
"###);
|
"###);
|
||||||
db_snap!(index, searchable_fields, @"[]");
|
db_snap!(index, searchable_fields, @"[]");
|
||||||
db_snap!(index, fieldids_weights_map, @r###"
|
db_snap!(index, fieldids_weights_map, @r###"
|
||||||
@ -3139,7 +3145,6 @@ pub(crate) mod tests {
|
|||||||
db_snap!(index, fields_ids_map, @r###"
|
db_snap!(index, fields_ids_map, @r###"
|
||||||
0 id |
|
0 id |
|
||||||
1 _vectors |
|
1 _vectors |
|
||||||
2 _vectors.doggo |
|
|
||||||
"###);
|
"###);
|
||||||
db_snap!(index, searchable_fields, @"[]");
|
db_snap!(index, searchable_fields, @"[]");
|
||||||
db_snap!(index, fieldids_weights_map, @r###"
|
db_snap!(index, fieldids_weights_map, @r###"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user