From 35e1981488b41fbcea4d1bb2f3da9f5c0c76429d Mon Sep 17 00:00:00 2001 From: ManyTheFish Date: Thu, 14 Dec 2023 15:52:42 +0100 Subject: [PATCH 1/4] Remove proximityPrecision form the experimental feature --- index-scheduler/src/batch.rs | 3 -- index-scheduler/src/features.rs | 13 ------ meilisearch-types/src/features.rs | 1 - meilisearch/src/routes/features.rs | 8 ---- meilisearch/tests/dumps/mod.rs | 3 +- meilisearch/tests/features/mod.rs | 20 +++------ .../tests/settings/proximity_settings.rs | 44 ------------------- 7 files changed, 8 insertions(+), 84 deletions(-) diff --git a/index-scheduler/src/batch.rs b/index-scheduler/src/batch.rs index 94a8b3f07..5c904ad98 100644 --- a/index-scheduler/src/batch.rs +++ b/index-scheduler/src/batch.rs @@ -1345,9 +1345,6 @@ impl IndexScheduler { for (task, (_, settings)) in tasks.iter_mut().zip(settings) { let checked_settings = settings.clone().check(); - if checked_settings.proximity_precision.set().is_some() { - self.features.features().check_proximity_precision()?; - } task.details = Some(Details::SettingsUpdate { settings: Box::new(settings) }); apply_settings_to_builder(&checked_settings, &mut builder); diff --git a/index-scheduler/src/features.rs b/index-scheduler/src/features.rs index ae2823c30..1db27bcd5 100644 --- a/index-scheduler/src/features.rs +++ b/index-scheduler/src/features.rs @@ -81,19 +81,6 @@ impl RoFeatures { .into()) } } - - pub fn check_proximity_precision(&self) -> Result<()> { - if self.runtime.proximity_precision { - Ok(()) - } else { - Err(FeatureNotEnabledError { - disabled_action: "Using `proximityPrecision` index setting", - feature: "proximity precision", - issue_link: "https://github.com/orgs/meilisearch/discussions/710", - } - .into()) - } - } } impl FeatureData { diff --git a/meilisearch-types/src/features.rs b/meilisearch-types/src/features.rs index f0cbce340..33afe2d24 100644 --- a/meilisearch-types/src/features.rs +++ b/meilisearch-types/src/features.rs @@ -7,7 +7,6 @@ pub struct RuntimeTogglableFeatures { pub vector_store: bool, pub metrics: bool, pub export_puffin_reports: bool, - pub proximity_precision: bool, } #[derive(Default, Debug, Clone, Copy)] diff --git a/meilisearch/src/routes/features.rs b/meilisearch/src/routes/features.rs index 29e922eba..e7fd8de22 100644 --- a/meilisearch/src/routes/features.rs +++ b/meilisearch/src/routes/features.rs @@ -48,8 +48,6 @@ pub struct RuntimeTogglableFeatures { pub metrics: Option, #[deserr(default)] pub export_puffin_reports: Option, - #[deserr(default)] - pub proximity_precision: Option, } async fn patch_features( @@ -72,10 +70,6 @@ async fn patch_features( .0 .export_puffin_reports .unwrap_or(old_features.export_puffin_reports), - proximity_precision: new_features - .0 - .proximity_precision - .unwrap_or(old_features.proximity_precision), }; // explicitly destructure for analytics rather than using the `Serialize` implementation, because @@ -86,7 +80,6 @@ async fn patch_features( vector_store, metrics, export_puffin_reports, - proximity_precision, } = new_features; analytics.publish( @@ -96,7 +89,6 @@ async fn patch_features( "vector_store": vector_store, "metrics": metrics, "export_puffin_reports": export_puffin_reports, - "proximity_precision": proximity_precision, }), Some(&req), ); diff --git a/meilisearch/tests/dumps/mod.rs b/meilisearch/tests/dumps/mod.rs index 9e949436a..cb61d5e29 100644 --- a/meilisearch/tests/dumps/mod.rs +++ b/meilisearch/tests/dumps/mod.rs @@ -1848,8 +1848,7 @@ async fn import_dump_v6_containing_experimental_features() { "scoreDetails": false, "vectorStore": false, "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###); diff --git a/meilisearch/tests/features/mod.rs b/meilisearch/tests/features/mod.rs index 812a5c6bb..abb006ac8 100644 --- a/meilisearch/tests/features/mod.rs +++ b/meilisearch/tests/features/mod.rs @@ -21,8 +21,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": false, "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###); @@ -34,8 +33,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###); @@ -47,8 +45,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###); @@ -61,8 +58,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###); @@ -75,8 +71,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###); } @@ -96,8 +91,7 @@ async fn experimental_feature_metrics() { "scoreDetails": false, "vectorStore": false, "metrics": true, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###); @@ -152,7 +146,7 @@ async fn errors() { meili_snap::snapshot!(code, @"400 Bad Request"); meili_snap::snapshot!(meili_snap::json_string!(response), @r###" { - "message": "Unknown field `NotAFeature`: expected one of `scoreDetails`, `vectorStore`, `metrics`, `exportPuffinReports`, `proximityPrecision`", + "message": "Unknown field `NotAFeature`: expected one of `scoreDetails`, `vectorStore`, `metrics`, `exportPuffinReports`", "code": "bad_request", "type": "invalid_request", "link": "https://docs.meilisearch.com/errors#bad_request" diff --git a/meilisearch/tests/settings/proximity_settings.rs b/meilisearch/tests/settings/proximity_settings.rs index d445adbfa..83f6c65b5 100644 --- a/meilisearch/tests/settings/proximity_settings.rs +++ b/meilisearch/tests/settings/proximity_settings.rs @@ -27,17 +27,6 @@ static DOCUMENTS: Lazy = Lazy::new(|| { #[actix_rt::test] async fn attribute_scale_search() { let server = Server::new().await; - let (response, code) = server.set_features(json!({"proximityPrecision": true})).await; - meili_snap::snapshot!(code, @"200 OK"); - meili_snap::snapshot!(meili_snap::json_string!(response), @r###" - { - "scoreDetails": false, - "vectorStore": false, - "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": true - } - "###); let index = server.index("test"); index.add_documents(DOCUMENTS.clone(), None).await; @@ -111,17 +100,6 @@ async fn attribute_scale_search() { #[actix_rt::test] async fn attribute_scale_phrase_search() { let server = Server::new().await; - let (response, code) = server.set_features(json!({"proximityPrecision": true})).await; - meili_snap::snapshot!(code, @"200 OK"); - meili_snap::snapshot!(meili_snap::json_string!(response), @r###" - { - "scoreDetails": false, - "vectorStore": false, - "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": true - } - "###); let index = server.index("test"); index.add_documents(DOCUMENTS.clone(), None).await; @@ -190,17 +168,6 @@ async fn attribute_scale_phrase_search() { #[actix_rt::test] async fn word_scale_set_and_reset() { let server = Server::new().await; - let (response, code) = server.set_features(json!({"proximityPrecision": true})).await; - meili_snap::snapshot!(code, @"200 OK"); - meili_snap::snapshot!(meili_snap::json_string!(response), @r###" - { - "scoreDetails": false, - "vectorStore": false, - "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": true - } - "###); let index = server.index("test"); index.add_documents(DOCUMENTS.clone(), None).await; @@ -316,17 +283,6 @@ async fn word_scale_set_and_reset() { #[actix_rt::test] async fn attribute_scale_default_ranking_rules() { let server = Server::new().await; - let (response, code) = server.set_features(json!({"proximityPrecision": true})).await; - meili_snap::snapshot!(code, @"200 OK"); - meili_snap::snapshot!(meili_snap::json_string!(response), @r###" - { - "scoreDetails": false, - "vectorStore": false, - "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": true - } - "###); let index = server.index("test"); index.add_documents(DOCUMENTS.clone(), None).await; From 6425996e3641c4e040c9e73666586ee1cb5ff72f Mon Sep 17 00:00:00 2001 From: ManyTheFish Date: Thu, 14 Dec 2023 16:31:00 +0100 Subject: [PATCH 2/4] Change the naming of attributeScale and wordScale into byAttribute and byWord --- meilisearch-types/src/settings.rs | 12 +++--- ..._use_deactivated_experimental_setting.dump | Bin 1522 -> 1535 bytes meilisearch/tests/dumps/mod.rs | 2 +- .../tests/settings/proximity_settings.rs | 10 ++--- milli/src/proximity.rs | 4 +- milli/src/search/new/db_cache.rs | 40 +++++++++--------- .../src/update/index_documents/extract/mod.rs | 2 +- 7 files changed, 34 insertions(+), 36 deletions(-) diff --git a/meilisearch-types/src/settings.rs b/meilisearch-types/src/settings.rs index 487354b8e..f59297b59 100644 --- a/meilisearch-types/src/settings.rs +++ b/meilisearch-types/src/settings.rs @@ -703,23 +703,23 @@ impl From for Criterion { #[serde(deny_unknown_fields, rename_all = "camelCase")] #[deserr(error = DeserrJsonError, rename_all = camelCase, deny_unknown_fields)] pub enum ProximityPrecisionView { - WordScale, - AttributeScale, + ByWord, + ByAttribute, } impl From for ProximityPrecisionView { fn from(value: ProximityPrecision) -> Self { match value { - ProximityPrecision::WordScale => ProximityPrecisionView::WordScale, - ProximityPrecision::AttributeScale => ProximityPrecisionView::AttributeScale, + ProximityPrecision::ByWord => ProximityPrecisionView::ByWord, + ProximityPrecision::ByAttribute => ProximityPrecisionView::ByAttribute, } } } impl From for ProximityPrecision { fn from(value: ProximityPrecisionView) -> Self { match value { - ProximityPrecisionView::WordScale => ProximityPrecision::WordScale, - ProximityPrecisionView::AttributeScale => ProximityPrecision::AttributeScale, + ProximityPrecisionView::ByWord => ProximityPrecision::ByWord, + ProximityPrecisionView::ByAttribute => ProximityPrecision::ByAttribute, } } } diff --git a/meilisearch/tests/assets/v6_v1.6.0_use_deactivated_experimental_setting.dump b/meilisearch/tests/assets/v6_v1.6.0_use_deactivated_experimental_setting.dump index 4f50733fd179e3b36e5a36fb822783deaaa9209f..3695b3f82065b34ae7f255a5c970ef0a8ab3b3c6 100644 GIT binary patch literal 1535 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 diff --git a/meilisearch/tests/dumps/mod.rs b/meilisearch/tests/dumps/mod.rs index cb61d5e29..b06db6f27 100644 --- a/meilisearch/tests/dumps/mod.rs +++ b/meilisearch/tests/dumps/mod.rs @@ -1877,7 +1877,7 @@ async fn import_dump_v6_containing_experimental_features() { "dictionary": [], "synonyms": {}, "distinctAttribute": null, - "proximityPrecision": "attributeScale", + "proximityPrecision": "byAttribute", "typoTolerance": { "enabled": true, "minWordSizeForTypos": { diff --git a/meilisearch/tests/settings/proximity_settings.rs b/meilisearch/tests/settings/proximity_settings.rs index 83f6c65b5..8b206ded4 100644 --- a/meilisearch/tests/settings/proximity_settings.rs +++ b/meilisearch/tests/settings/proximity_settings.rs @@ -34,7 +34,7 @@ async fn attribute_scale_search() { let (response, code) = index .update_settings(json!({ - "proximityPrecision": "attributeScale", + "proximityPrecision": "byAttribute", "rankingRules": ["words", "typo", "proximity"], })) .await; @@ -107,7 +107,7 @@ async fn attribute_scale_phrase_search() { let (_response, _code) = index .update_settings(json!({ - "proximityPrecision": "attributeScale", + "proximityPrecision": "byAttribute", "rankingRules": ["words", "typo", "proximity"], })) .await; @@ -176,7 +176,7 @@ async fn word_scale_set_and_reset() { // Set and reset the setting ensuring the swap between the 2 settings is applied. let (_response, _code) = index .update_settings(json!({ - "proximityPrecision": "attributeScale", + "proximityPrecision": "byAttribute", "rankingRules": ["words", "typo", "proximity"], })) .await; @@ -184,7 +184,7 @@ async fn word_scale_set_and_reset() { let (_response, _code) = index .update_settings(json!({ - "proximityPrecision": "wordScale", + "proximityPrecision": "byWord", "rankingRules": ["words", "typo", "proximity"], })) .await; @@ -290,7 +290,7 @@ async fn attribute_scale_default_ranking_rules() { let (response, code) = index .update_settings(json!({ - "proximityPrecision": "attributeScale" + "proximityPrecision": "byAttribute" })) .await; assert_eq!("202", code.as_str(), "{:?}", response); diff --git a/milli/src/proximity.rs b/milli/src/proximity.rs index 2745527c1..ce47d7775 100644 --- a/milli/src/proximity.rs +++ b/milli/src/proximity.rs @@ -32,6 +32,6 @@ pub fn path_proximity(path: &[Position]) -> u32 { #[serde(rename_all = "camelCase")] pub enum ProximityPrecision { #[default] - WordScale, - AttributeScale, + ByWord, + ByAttribute, } diff --git a/milli/src/search/new/db_cache.rs b/milli/src/search/new/db_cache.rs index 76948f1ed..62c921a1d 100644 --- a/milli/src/search/new/db_cache.rs +++ b/milli/src/search/new/db_cache.rs @@ -299,9 +299,9 @@ impl<'ctx> SearchContext<'ctx> { proximity: u8, ) -> Result> { match self.index.proximity_precision(self.txn)?.unwrap_or_default() { - ProximityPrecision::AttributeScale => { + ProximityPrecision::ByAttribute => { // Force proximity to 0 because: - // in AttributeScale, there are only 2 possible distances: + // in ByAttribute, there are only 2 possible distances: // 1. words in same attribute: in that the DB contains (0, word1, word2) // 2. words in different attributes: no DB entry for these two words. let proximity = 0; @@ -345,19 +345,17 @@ impl<'ctx> SearchContext<'ctx> { Ok(docids) } - ProximityPrecision::WordScale => { - DatabaseCache::get_value::<_, _, CboRoaringBitmapCodec>( - self.txn, - (proximity, word1, word2), - &( - proximity, - self.word_interner.get(word1).as_str(), - self.word_interner.get(word2).as_str(), - ), - &mut self.db_cache.word_pair_proximity_docids, - self.index.word_pair_proximity_docids.remap_data_type::(), - ) - } + ProximityPrecision::ByWord => DatabaseCache::get_value::<_, _, CboRoaringBitmapCodec>( + self.txn, + (proximity, word1, word2), + &( + proximity, + self.word_interner.get(word1).as_str(), + self.word_interner.get(word2).as_str(), + ), + &mut self.db_cache.word_pair_proximity_docids, + self.index.word_pair_proximity_docids.remap_data_type::(), + ), } } @@ -368,10 +366,10 @@ impl<'ctx> SearchContext<'ctx> { proximity: u8, ) -> Result> { match self.index.proximity_precision(self.txn)?.unwrap_or_default() { - ProximityPrecision::AttributeScale => Ok(self + ProximityPrecision::ByAttribute => Ok(self .get_db_word_pair_proximity_docids(word1, word2, proximity)? .map(|d| d.len())), - ProximityPrecision::WordScale => { + ProximityPrecision::ByWord => { DatabaseCache::get_value::<_, _, CboRoaringBitmapLenCodec>( self.txn, (proximity, word1, word2), @@ -394,9 +392,9 @@ impl<'ctx> SearchContext<'ctx> { mut proximity: u8, ) -> Result> { let proximity_precision = self.index.proximity_precision(self.txn)?.unwrap_or_default(); - if proximity_precision == ProximityPrecision::AttributeScale { + if proximity_precision == ProximityPrecision::ByAttribute { // Force proximity to 0 because: - // in AttributeScale, there are only 2 possible distances: + // in ByAttribute, there are only 2 possible distances: // 1. words in same attribute: in that the DB contains (0, word1, word2) // 2. words in different attributes: no DB entry for these two words. proximity = 0; @@ -408,7 +406,7 @@ impl<'ctx> SearchContext<'ctx> { docids.clone() } else { let prefix_docids = match proximity_precision { - ProximityPrecision::AttributeScale => { + ProximityPrecision::ByAttribute => { // Compute the distance at the attribute level and store it in the cache. let fids = if let Some(fids) = self.index.searchable_fields_ids(self.txn)? { fids @@ -429,7 +427,7 @@ impl<'ctx> SearchContext<'ctx> { } prefix_docids } - ProximityPrecision::WordScale => { + ProximityPrecision::ByWord => { // compute docids using prefix iter and store the result in the cache. let key = U8StrStrCodec::bytes_encode(&( proximity, diff --git a/milli/src/update/index_documents/extract/mod.rs b/milli/src/update/index_documents/extract/mod.rs index 57f349894..2dc3f2efe 100644 --- a/milli/src/update/index_documents/extract/mod.rs +++ b/milli/src/update/index_documents/extract/mod.rs @@ -152,7 +152,7 @@ pub(crate) fn data_from_obkv_documents( }); } - if proximity_precision == ProximityPrecision::WordScale { + if proximity_precision == ProximityPrecision::ByWord { spawn_extraction_task::<_, _, Vec>>>( docid_word_positions_chunks.clone(), indexer, From e741bc1c62803e61c1d6ab1459aa4c0628354bca Mon Sep 17 00:00:00 2001 From: ManyTheFish Date: Thu, 14 Dec 2023 16:48:06 +0100 Subject: [PATCH 3/4] Add proximity_precision value into the analytics --- meilisearch/src/routes/indexes/settings.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/meilisearch/src/routes/indexes/settings.rs b/meilisearch/src/routes/indexes/settings.rs index c22db24f0..1d949a059 100644 --- a/meilisearch/src/routes/indexes/settings.rs +++ b/meilisearch/src/routes/indexes/settings.rs @@ -452,6 +452,7 @@ make_setting_route!( json!({ "proximity_precision": { "set": precision.is_some(), + "value": precision, } }), Some(req), From 3a99a555a21381ea2a29cf5e8d261b303d208696 Mon Sep 17 00:00:00 2001 From: ManyTheFish Date: Mon, 18 Dec 2023 10:05:51 +0100 Subject: [PATCH 4/4] Fix experimental features snapshots in tests --- meilisearch/tests/search/hybrid.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meilisearch/tests/search/hybrid.rs b/meilisearch/tests/search/hybrid.rs index c3534c110..fb6fe297f 100644 --- a/meilisearch/tests/search/hybrid.rs +++ b/meilisearch/tests/search/hybrid.rs @@ -16,8 +16,7 @@ async fn index_with_documents<'a>(server: &'a Server, documents: &Value) -> Inde "scoreDetails": false, "vectorStore": true, "metrics": false, - "exportPuffinReports": false, - "proximityPrecision": false + "exportPuffinReports": false } "###);