diff --git a/meilisearch-core/src/update/documents_addition.rs b/meilisearch-core/src/update/documents_addition.rs index 668ce5613..350f5dd35 100644 --- a/meilisearch-core/src/update/documents_addition.rs +++ b/meilisearch-core/src/update/documents_addition.rs @@ -212,11 +212,6 @@ pub fn apply_addition<'a, 'b>( let stop_words = index.main.stop_words_fst(writer)?.map_data(Cow::into_owned)?; - // 3. index the documents fields in the stores - if let Some(attributes_for_facetting) = index.main.attributes_for_faceting(writer)? { - let facet_map = facets::facet_map_from_docs(&schema, &documents_additions, attributes_for_facetting.as_ref())?; - index.facets.add(writer, facet_map)?; - } let mut indexer = RawIndexer::new(stop_words); @@ -254,6 +249,13 @@ pub fn apply_addition<'a, 'b>( index.main.merge_external_docids(writer, &new_external_docids)?; index.main.merge_internal_docids(writer, &new_internal_docids)?; + // recompute all facet attributes after document update. + if let Some(attributes_for_facetting) = index.main.attributes_for_faceting(writer)? { + let docids = index.main.internal_docids(writer)?; + let facet_map = facets::facet_map_from_docids(writer, index, &docids, attributes_for_facetting.as_ref())?; + index.facets.add(writer, facet_map)?; + } + Ok(()) } @@ -344,6 +346,13 @@ pub fn reindex_all_documents(writer: &mut heed::RwTxn, index: &store::Ind index.main.put_schema(writer, &schema)?; + // recompute all facet attributes after document update. + if let Some(attributes_for_facetting) = index.main.attributes_for_faceting(writer)? { + let docids = index.main.internal_docids(writer)?; + let facet_map = facets::facet_map_from_docids(writer, index, &docids, attributes_for_facetting.as_ref())?; + index.facets.add(writer, facet_map)?; + } + Ok(()) }