From 3b97b03b00d7eff2fc8b25e98ae4c3873daed508 Mon Sep 17 00:00:00 2001 From: Many the fish Date: Mon, 10 Mar 2025 14:51:23 +0100 Subject: [PATCH] Avoid reindexing searchable order changes Update settings.rs Update settings.rs --- crates/milli/src/update/settings.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/crates/milli/src/update/settings.rs b/crates/milli/src/update/settings.rs index 85259c2d0..1f4bd5ec8 100644 --- a/crates/milli/src/update/settings.rs +++ b/crates/milli/src/update/settings.rs @@ -1348,8 +1348,21 @@ impl InnerIndexSettingsDiff { let cache_exact_attributes = old_settings.exact_attributes != new_settings.exact_attributes; - let cache_user_defined_searchables = old_settings.user_defined_searchable_fields - != new_settings.user_defined_searchable_fields; + // Check if any searchable field has been added or removed form the list, + // Changing the order should not be considered as a change for reindexing. + let cache_user_defined_searchables = match ( + &old_settings.user_defined_searchable_fields, + &new_settings.user_defined_searchable_fields, + ) { + (Some(old), Some(new)) => { + let old: BTreeSet<_> = old.iter().collect(); + let new: BTreeSet<_> = new.iter().collect(); + + old != new + } + (None, None) => false, + _otherwise => true, + }; // if the user-defined searchables changed, then we need to reindex prompts. if cache_user_defined_searchables {