From 5d191c479e0f328ca670be5803fc4cbaeb967c0e Mon Sep 17 00:00:00 2001 From: ManyTheFish Date: Thu, 12 Jun 2025 12:37:27 +0200 Subject: [PATCH] Skip indexing on settings update when possible, when removing a field from the filterable settings, this will trigger a reindexing of the negative version of the document, which removes the document from the searchable as well because the field was considered removed. --- .../extract/extract_docid_word_positions.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/milli/src/update/index_documents/extract/extract_docid_word_positions.rs b/crates/milli/src/update/index_documents/extract/extract_docid_word_positions.rs index d502e69cc..b906c7778 100644 --- a/crates/milli/src/update/index_documents/extract/extract_docid_word_positions.rs +++ b/crates/milli/src/update/index_documents/extract/extract_docid_word_positions.rs @@ -29,7 +29,6 @@ pub fn extract_docid_word_positions( let max_positions_per_attributes = max_positions_per_attributes .map_or(MAX_POSITION_PER_ATTRIBUTE, |max| max.min(MAX_POSITION_PER_ATTRIBUTE)); let max_memory = indexer.max_memory_by_thread(); - let force_reindexing = settings_diff.reindex_searchable(); // initialize destination values. let mut documents_ids = RoaringBitmap::new(); @@ -43,6 +42,12 @@ pub fn extract_docid_word_positions( true, ); + let force_reindexing = settings_diff.reindex_searchable(); + let skip_indexing = !force_reindexing && settings_diff.settings_update_only(); + if skip_indexing { + return sorter_into_reader(docid_word_positions_sorter, indexer); + } + // initialize buffers. let mut del_buffers = Buffers::default(); let mut add_buffers = Buffers::default();