From 81a18ab340730f8072d49bf79c51654565e20046 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 15 Sep 2014 22:26:25 +0200 Subject: [PATCH] Fixed nasty lookup bug when querying for multi-word fuzzy matches using mysql. Resolves #527. --- src/objects/manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/objects/manager.py b/src/objects/manager.py index 4a0a0aad41..ac5c80d621 100644 --- a/src/objects/manager.py +++ b/src/objects/manager.py @@ -216,7 +216,8 @@ class ObjectManager(TypedObjectManager): key_candidates = self.filter(type_restriction & (Q(db_key__istartswith=ostring) | Q(db_tags__db_key__istartswith=ostring))).distinct() candidates_id = [_GA(obj, "id") for obj in key_candidates] # fuzzy matching - key_strings = key_candidates.values_list("db_key", flat=True) + key_strings = key_candidates.values_list("db_key", flat=True).order_by("id") + index_matches = string_partial_matching(key_strings, ostring, ret_index=True) if index_matches: return [obj for ind, obj in enumerate(key_candidates) if ind in index_matches]