From bd0e157b9155a999b6c96bbd834319fa67b298d3 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Tue, 31 May 2022 16:57:37 +0200 Subject: [PATCH] fix order when searching for addr:* components When matching addr:* components the preference was given to matches that do not intersect with the place. --- lib-sql/functions/partition-functions.sql | 2 +- test/bdd/db/import/addressing.feature | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib-sql/functions/partition-functions.sql b/lib-sql/functions/partition-functions.sql index e5d356e1..ec762f4f 100644 --- a/lib-sql/functions/partition-functions.sql +++ b/lib-sql/functions/partition-functions.sql @@ -96,7 +96,7 @@ BEGIN AND rank_address between from_rank and to_rank AND token_matches_address(token_info, key, keywords) GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid - ORDER BY bool_or(ST_Intersects(geometry, feature)), distance LIMIT 1; + ORDER BY bool_or(ST_Intersects(geometry, feature)) DESC, distance LIMIT 1; RETURN r; END IF; {% endfor %} diff --git a/test/bdd/db/import/addressing.feature b/test/bdd/db/import/addressing.feature index b2437d71..5ab748d9 100644 --- a/test/bdd/db/import/addressing.feature +++ b/test/bdd/db/import/addressing.feature @@ -506,3 +506,23 @@ Feature: Address computation Then results contain | osm | display_name | | N2 | Leftside, Wonderway, Left | + + + Scenario: addr:* tags always match the closer area + Given the grid + | 1 | | | | 2 | | 5 | + | | | | | | | | + | | 10| 11| | | | | + | 4 | | | | 3 | | 6 | + And the places + | osm | class | type | admin | name | geometry | + | R1 | boundary | administrative | 8 | Left | (1,2,3,4,1) | + | R2 | boundary | administrative | 8 | Left | (2,3,6,5,2) | + And the places + | osm | class | type | name | addr+city | geometry | + | W1 | highway | primary | Wonderway | Left | 10,11 | + When importing + Then place_addressline doesn't contain + | object | address | + | W1 | R2 | + -- 2.39.5