From a09d08c7b6ed4fc3dd114d8306a1035c2cc0c0e5 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 325a9f15c..9cab74444 100644 --- a/crates/milli/src/update/settings.rs +++ b/crates/milli/src/update/settings.rs @@ -1331,8 +1331,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_attributes - != new_settings.user_defined_searchable_attributes; + // 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_attributes, + &new_settings.user_defined_searchable_attributes, + ) { + (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 {