diff --git a/meilisearch-core/src/serde/deserializer.rs b/meilisearch-core/src/serde/deserializer.rs index e5e02a4d6..d4674016b 100644 --- a/meilisearch-core/src/serde/deserializer.rs +++ b/meilisearch-core/src/serde/deserializer.rs @@ -55,6 +55,7 @@ pub struct Deserializer<'a> { pub documents_fields: DocumentsFields, pub schema: &'a Schema, pub fields: Option<&'a HashSet>, + pub displayed: bool, } impl<'de, 'a, 'b> de::Deserializer<'de> for &'b mut Deserializer<'a> { @@ -93,7 +94,7 @@ impl<'de, 'a, 'b> de::Deserializer<'de> for &'b mut Deserializer<'a> { }; let is_displayed = self.schema.is_displayed(attr); - if is_displayed && self.fields.map_or(true, |f| f.contains(&attr)) { + if !self.displayed || (is_displayed && self.fields.map_or(true, |f| f.contains(&attr))) { if let Some(attribute_name) = self.schema.name(attr) { let cursor = Cursor::new(value.to_owned()); let ioread = SerdeJsonIoRead::new(cursor); diff --git a/meilisearch-core/src/store/mod.rs b/meilisearch-core/src/store/mod.rs index fa5baa831..4f8e1250a 100644 --- a/meilisearch-core/src/store/mod.rs +++ b/meilisearch-core/src/store/mod.rs @@ -243,6 +243,7 @@ impl Index { documents_fields: self.documents_fields, schema: &schema, fields: attributes.as_ref(), + displayed: true, }; Ok(Option::::deserialize(&mut deserializer)?) diff --git a/meilisearch-core/src/update/documents_addition.rs b/meilisearch-core/src/update/documents_addition.rs index 5603966b0..e6b9db90e 100644 --- a/meilisearch-core/src/update/documents_addition.rs +++ b/meilisearch-core/src/update/documents_addition.rs @@ -197,6 +197,7 @@ pub fn apply_addition<'a, 'b>( documents_fields: index.documents_fields, schema: &schema, fields: None, + displayed: false, }; let old_document = Option::>::deserialize(&mut deserializer)?;