X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/ae8694a6a6862d7cb66cd91102d2802c9899e7cf..f8337bedb28178a1c7f9ab0eb9373cbb9277afe6:/src/nominatim_api/search/geocoder.py diff --git a/src/nominatim_api/search/geocoder.py b/src/nominatim_api/search/geocoder.py index 195dd513..69455d77 100644 --- a/src/nominatim_api/search/geocoder.py +++ b/src/nominatim_api/search/geocoder.py @@ -116,7 +116,7 @@ class ForwardGeocoder: limit to the configured number of results. """ if results: - results.sort(key=lambda r: r.ranking) + results.sort(key=lambda r: (r.ranking, 0 if r.bbox is None else -r.bbox.area)) min_rank = results[0].rank_search min_ranking = results[0].ranking results = SearchResults(r for r in results @@ -133,7 +133,7 @@ class ForwardGeocoder: """ assert self.query_analyzer is not None qwords = [word for phrase in query.source - for word in re.split('[, ]+', phrase.text) if word] + for word in re.split('[-,: ]+', phrase.text) if word] if not qwords: return @@ -146,7 +146,7 @@ class ForwardGeocoder: distance = 0.0 norm = self.query_analyzer.normalize_text(' '.join((result.display_name, result.country_code or ''))) - words = set((w for w in norm.split(' ') if w)) + words = set((w for w in re.split('[-,: ]+', norm) if w)) if not words: continue for qword in qwords: