diff --git a/crates/meilisearch-types/src/settings.rs b/crates/meilisearch-types/src/settings.rs index bb5433623..8a43438d7 100644 --- a/crates/meilisearch-types/src/settings.rs +++ b/crates/meilisearch-types/src/settings.rs @@ -706,6 +706,12 @@ pub fn apply_settings_to_builder( Setting::Reset => builder.reset_exact_attributes(), Setting::NotSet => (), } + + match value.disable_on_numbers { + Setting::Set(val) => builder.set_disable_on_numbers(val), + Setting::Reset => builder.reset_disable_on_numbers(), + Setting::NotSet => (), + } } Setting::Reset => { // all typo settings need to be reset here. diff --git a/crates/milli/src/update/settings.rs b/crates/milli/src/update/settings.rs index 5b671448e..fd83670b0 100644 --- a/crates/milli/src/update/settings.rs +++ b/crates/milli/src/update/settings.rs @@ -170,7 +170,7 @@ pub struct Settings<'a, 't, 'i> { synonyms: Setting>>, primary_key: Setting, authorize_typos: Setting, - disabled_typos_terms: Setting, + disable_on_numbers: Setting, min_word_len_two_typos: Setting, min_word_len_one_typo: Setting, exact_words: Setting>, @@ -209,7 +209,7 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> { synonyms: Setting::NotSet, primary_key: Setting::NotSet, authorize_typos: Setting::NotSet, - disabled_typos_terms: Setting::NotSet, + disable_on_numbers: Setting::NotSet, exact_words: Setting::NotSet, min_word_len_two_typos: Setting::NotSet, min_word_len_one_typo: Setting::NotSet, @@ -357,8 +357,12 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> { self.min_word_len_one_typo = Setting::Reset; } - pub fn set_disabled_typos_terms(&mut self, disabled_typos_terms: DisabledTyposTerms) { - self.disabled_typos_terms = Setting::Set(disabled_typos_terms); + pub fn set_disable_on_numbers(&mut self, disable_on_numbers: bool) { + self.disable_on_numbers = Setting::Set(disable_on_numbers); + } + + pub fn reset_disable_on_numbers(&mut self) { + self.disable_on_numbers = Setting::Reset; } pub fn set_exact_words(&mut self, words: BTreeSet) { @@ -874,15 +878,20 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> { } fn update_disabled_typos_terms(&mut self) -> Result<()> { - match self.disabled_typos_terms { - Setting::Set(disabled_typos_terms) => { - self.index.put_disabled_typos_terms(self.wtxn, &disabled_typos_terms)?; + let mut disabled_typos_terms = self.index.disabled_typos_terms(self.wtxn)?; + match self.disable_on_numbers { + Setting::Set(disable_on_numbers) => { + disabled_typos_terms.disable_on_numbers = disable_on_numbers; } Setting::Reset => { self.index.delete_disabled_typos_terms(self.wtxn)?; + disabled_typos_terms.disable_on_numbers = + DisabledTyposTerms::default().disable_on_numbers; } Setting::NotSet => (), } + + self.index.put_disabled_typos_terms(self.wtxn, &disabled_typos_terms)?; Ok(()) } diff --git a/crates/milli/src/update/test_settings.rs b/crates/milli/src/update/test_settings.rs index de7caa304..2b9ee3a5e 100644 --- a/crates/milli/src/update/test_settings.rs +++ b/crates/milli/src/update/test_settings.rs @@ -896,7 +896,7 @@ fn test_correct_settings_init() { localized_attributes_rules, prefix_search, facet_search, - disabled_typos_terms, + disable_on_numbers, } = settings; assert!(matches!(searchable_fields, Setting::NotSet)); assert!(matches!(displayed_fields, Setting::NotSet)); @@ -924,7 +924,7 @@ fn test_correct_settings_init() { assert!(matches!(localized_attributes_rules, Setting::NotSet)); assert!(matches!(prefix_search, Setting::NotSet)); assert!(matches!(facet_search, Setting::NotSet)); - assert!(matches!(disabled_typos_terms, Setting::NotSet)); + assert!(matches!(disable_on_numbers, Setting::NotSet)); }) .unwrap(); }