feat(search, update): synonyms

This commit is contained in:
Alexey Shekhirin 2021-04-07 11:53:57 +03:00
parent 995d1a07d4
commit e39aabbfe6
No known key found for this signature in database
GPG key ID: AF9A26AA133B5B98
4 changed files with 132 additions and 26 deletions

View file

@ -260,6 +260,9 @@ struct Settings {
#[serde(default, skip_serializing_if = "Setting::is_not_set")]
stop_words: Setting<BTreeSet<String>>,
#[serde(default, skip_serializing_if = "Setting::is_not_set")]
synonyms: Setting<HashMap<String, Vec<String>>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
@ -431,6 +434,13 @@ async fn main() -> anyhow::Result<()> {
Setting::NotSet => ()
}
// We transpose the settings JSON struct into a real setting update.
match settings.synonyms {
Setting::Set(synonyms) => builder.set_synonyms(synonyms),
Setting::Reset => builder.reset_synonyms(),
Setting::NotSet => ()
}
let result = builder.execute(|indexing_step, update_id| {
let (current, total) = match indexing_step {
TransformFromUserIntoGenericFormat { documents_seen } => (documents_seen, None),
@ -1011,6 +1021,7 @@ mod tests {
faceted_attributes: Setting::Set(hashmap! { "age".into() => "integer".into() }),
criteria: Setting::Set(vec!["asc(age)".to_string()]),
stop_words: Setting::Set(btreeset! { "and".to_string() }),
synonyms: Setting::NotSet
};
assert_tokens(&settings, &[
@ -1053,6 +1064,7 @@ mod tests {
faceted_attributes: Setting::Reset,
criteria: Setting::Reset,
stop_words: Setting::Reset,
synonyms: Setting::NotSet
};
assert_tokens(&settings, &[