From b680d81f0a84277abc5985a1692e020fef33af1b Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Fri, 11 Apr 2025 11:01:13 +0200 Subject: [PATCH] ensure that bailout-check is done after each iteration --- src/nominatim_api/search/db_search_builder.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/nominatim_api/search/db_search_builder.py b/src/nominatim_api/search/db_search_builder.py index c363442d..43e384e6 100644 --- a/src/nominatim_api/search/db_search_builder.py +++ b/src/nominatim_api/search/db_search_builder.py @@ -316,14 +316,14 @@ class SearchBuilder: rank.with_token(t, chgpenalty))) elif tlist.end == trange.end: ranks.extend(rank.with_token(t, 0.0) for t in tlist.tokens) - if len(ranks) >= 10: - # Too many variants, bail out and only add - # Worst-case Fallback: sum of penalty of partials - default = sum(t.penalty for t in self.query.iter_partials(trange)) + 0.2 - ranks.append(dbf.RankedTokens(rank.penalty + default, [])) - # Bail out of outer loop - todo.clear() - break + + if len(ranks) >= 10: + # Too many variants, bail out and only add + # Worst-case Fallback: sum of penalty of partials + default = sum(t.penalty for t in self.query.iter_partials(trange)) + 0.2 + ranks.append(dbf.RankedTokens(rank.penalty + default, [])) + # Bail out of outer loop + break ranks.sort(key=lambda r: len(r.tokens)) default = ranks[0].penalty + 0.3 -- 2.39.5