From 0cb2bf34a5b8aafe3fbca8a5bcefb12bda302385 Mon Sep 17 00:00:00 2001 From: ManyTheFish Date: Tue, 1 Apr 2025 16:12:41 +0200 Subject: [PATCH] Fix test --- crates/meilisearch-types/src/settings.rs | 6 +++++ .../tests/settings/get_settings.rs | 2 +- crates/milli/src/disabled_typos_terms.rs | 2 +- .../extract/extract_word_docids.rs | 4 ++-- crates/milli/src/update/settings.rs | 23 +++++++++++++------ crates/milli/src/update/test_settings.rs | 4 ++-- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/crates/meilisearch-types/src/settings.rs b/crates/meilisearch-types/src/settings.rs index 942a04b0a..ccf0d75ee 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/meilisearch/tests/settings/get_settings.rs b/crates/meilisearch/tests/settings/get_settings.rs index e9066c829..5c0f89ed3 100644 --- a/crates/meilisearch/tests/settings/get_settings.rs +++ b/crates/meilisearch/tests/settings/get_settings.rs @@ -179,7 +179,7 @@ test_setting_routes!( { setting: typo_tolerance, update_verb: patch, - default_value: {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": []} + default_value: {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": [], "disableOnNumbers": false} }, ); diff --git a/crates/milli/src/disabled_typos_terms.rs b/crates/milli/src/disabled_typos_terms.rs index b1f6c2cc6..3a0d0c0f5 100644 --- a/crates/milli/src/disabled_typos_terms.rs +++ b/crates/milli/src/disabled_typos_terms.rs @@ -28,7 +28,7 @@ impl Index { self.main.remap_types::>().put( txn, main_key::DISABLED_TYPOS_TERMS, - &disabled_typos_terms, + disabled_typos_terms, )?; Ok(()) diff --git a/crates/milli/src/update/index_documents/extract/extract_word_docids.rs b/crates/milli/src/update/index_documents/extract/extract_word_docids.rs index 5589ef26a..a964c0bbe 100644 --- a/crates/milli/src/update/index_documents/extract/extract_word_docids.rs +++ b/crates/milli/src/update/index_documents/extract/extract_word_docids.rs @@ -128,7 +128,7 @@ pub fn extract_word_docids( let obkv = KvReaderDelAdd::from_slice(value); if let Some(value) = obkv.get(DelAdd::Deletion) { let delete_from_exact = settings_diff.old.exact_attributes.contains(&fid) - || settings_diff.old.disabled_typos_terms.is_exact(&w); + || settings_diff.old.disabled_typos_terms.is_exact(w); buffer.clear(); let mut obkv = KvWriterDelAdd::new(&mut buffer); obkv.insert(DelAdd::Deletion, value)?; @@ -141,7 +141,7 @@ pub fn extract_word_docids( // merge all additions if let Some(value) = obkv.get(DelAdd::Addition) { let add_in_exact = settings_diff.new.exact_attributes.contains(&fid) - || settings_diff.new.disabled_typos_terms.is_exact(&w); + || settings_diff.new.disabled_typos_terms.is_exact(w); buffer.clear(); let mut obkv = KvWriterDelAdd::new(&mut buffer); obkv.insert(DelAdd::Addition, value)?; diff --git a/crates/milli/src/update/settings.rs b/crates/milli/src/update/settings.rs index 89d2c9211..51d9aed27 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(); }