]> git.openstreetmap.org Git - nominatim.git/commitdiff
fix order when searching for addr:* components
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 31 May 2022 14:57:37 +0000 (16:57 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 31 May 2022 14:57:37 +0000 (16:57 +0200)
When matching addr:* components the preference was given to
matches that do not intersect with the place.

lib-sql/functions/partition-functions.sql
test/bdd/db/import/addressing.feature

index e5d356e1e63f5e086f3f476187a23f9e75801770..ec762f4f7f60f5b5c755c2cf6b8f816f7742de2c 100644 (file)
@@ -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 %}
index b2437d71cf60282feeca558c8191ad73179134d5..5ab748d93f23871a6bd51f6f469554c5da987f4c 100644 (file)
@@ -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      |
+