From 7b21032d19d04a979c4e82e078aa33f3114ea408 Mon Sep 17 00:00:00 2001 From: congqixia Date: Thu, 5 Sep 2024 15:01:04 +0800 Subject: [PATCH] fix: Check all values for `trie.predictive_search` (#35943) Related to #35941 For marisa trie `predictive_search` default behavior, it value iterated is not in lexicographic order. This PR is a brute force fix to make range operator returns correct values. Signed-off-by: Congqi Xia --- internal/core/src/index/StringIndexMarisa.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/internal/core/src/index/StringIndexMarisa.cpp b/internal/core/src/index/StringIndexMarisa.cpp index f78df28990..fddef58518 100644 --- a/internal/core/src/index/StringIndexMarisa.cpp +++ b/internal/core/src/index/StringIndexMarisa.cpp @@ -315,12 +315,8 @@ StringIndexMarisa::Range(std::string value, OpType op) { auto key = std::string(agent.key().ptr(), agent.key().length()); if (key > value) { ids.push_back(agent.key().id()); - break; } }; - while (trie_.predictive_search(agent)) { - ids.push_back(agent.key().id()); - } break; } case OpType::GreaterEqual: { @@ -328,12 +324,8 @@ StringIndexMarisa::Range(std::string value, OpType op) { auto key = std::string(agent.key().ptr(), agent.key().length()); if (key >= value) { ids.push_back(agent.key().id()); - break; } } - while (trie_.predictive_search(agent)) { - ids.push_back(agent.key().id()); - } break; } case OpType::LessThan: {