facet settings

This commit is contained in:
mpostma 2020-05-05 22:27:06 +02:00
parent 59c67f6bc8
commit 270c7b0288
4 changed files with 54 additions and 1 deletions

View file

@ -91,6 +91,17 @@ async fn get_all(
let schema = index.main.schema(&reader)?;
let attributes_for_faceting = match (&schema, &index.main.attributes_for_faceting(&reader)?) {
(Some(schema), Some(attrs)) => {
Some(attrs
.iter()
.filter_map(|&id| schema .name(id))
.map(str::to_string)
.collect())
}
_ => None,
};
let searchable_attributes = schema.clone().map(|s| {
s.indexed_name()
.iter()
@ -115,6 +126,7 @@ async fn get_all(
stop_words: Some(Some(stop_words)),
synonyms: Some(Some(synonyms)),
accept_new_fields: Some(accept_new_fields),
attributes_for_faceting: Some(attributes_for_faceting),
};
Ok(HttpResponse::Ok().json(settings))
@ -140,6 +152,7 @@ async fn delete_all(
stop_words: UpdateState::Clear,
synonyms: UpdateState::Clear,
accept_new_fields: UpdateState::Clear,
attributes_for_faceting: UpdateState::Clear,
};
let update_id = index.settings_update(&mut writer, settings)?;

View file

@ -8,7 +8,6 @@ mod common;
async fn write_all_and_delete() {
let mut server = common::Server::with_uid("movies");
server.populate_movies().await;
// 2 - Send the settings
let body = json!({
@ -48,9 +47,11 @@ async fn write_all_and_delete() {
"wolverine": ["xmen", "logan"],
"logan": ["wolverine"],
},
"attributesForFaceting": ["title"],
"acceptNewFields": false,
});
server.update_all_settings(body.clone()).await;
// 3 - Get all settings and compare to the previous one
@ -119,6 +120,7 @@ async fn write_all_and_delete() {
],
"stopWords": [],
"synonyms": {},
"attributesForFaceting": null,
"acceptNewFields": true,
});
@ -169,6 +171,7 @@ async fn write_all_and_update() {
"wolverine": ["xmen", "logan"],
"logan": ["wolverine"],
},
"attributesForFaceting": ["title"],
"acceptNewFields": false,
});
@ -210,6 +213,7 @@ async fn write_all_and_update() {
"wolverine": ["xmen", "logan"],
"logan": ["wolverine", "xmen"],
},
"attributesForFaceting": ["title"],
"acceptNewFields": false,
});
@ -247,6 +251,7 @@ async fn write_all_and_update() {
"wolverine": ["xmen", "logan"],
"logan": ["wolverine", "xmen"],
},
"attributesForFaceting": ["title"],
"acceptNewFields": false
});
@ -277,6 +282,7 @@ async fn test_default_settings() {
"displayedAttributes": [],
"stopWords": [],
"synonyms": {},
"attributesForFaceting": null,
"acceptNewFields": true,
});
@ -314,6 +320,7 @@ async fn test_default_settings_2() {
],
"stopWords": [],
"synonyms": {},
"attributesForFaceting": null,
"acceptNewFields": true,
});
@ -421,6 +428,7 @@ async fn write_setting_and_update_partial() {
"wolverine": ["xmen", "logan"],
"logan": ["wolverine"],
},
"attributesForFaceting": null,
"acceptNewFields": false,
});