]> git.openstreetmap.org Git - nominatim.git/commitdiff
remove postcodes entirely from indexing
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 18 Sep 2020 13:09:35 +0000 (15:09 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 18 Sep 2020 13:09:35 +0000 (15:09 +0200)
place=postcode places are artificial places that collect addr:postcode
points for aggration. They should neither show up in the address nor
be searchable. That means that there is no need to index them at all.
Only let boundary=postal_code through which define correct areas for
postcodes.

sql/functions/placex_triggers.sql
sql/functions/ranking.sql
test/bdd/db/import/addressing.feature
test/bdd/db/import/placex.feature

index 3ddb97c04240225d87345360bbddf7e3ddbd52d7..0102d2c819d83c59f8a6047e732102e67d2341bb 100644 (file)
@@ -581,6 +581,15 @@ BEGIN
     RETURN NEW;
   END IF;
 
+  -- Postcodes are just here to compute the centroids. They are not searchable
+  -- unless they are a boundary=postal_code.
+  -- There was an error in the style so that boundary=postal_code used to be
+  -- imported as place=postcode. That's why relations are allowed to pass here.
+  -- This can go away in a couple of versions.
+  IF NEW.class = 'place'  and NEW.type = 'postcode' and NEW.osm_type != 'R' THEN
+    RETURN NEW;
+  END IF;
+
   -- Speed up searches - just use the centroid of the feature
   -- cheaper but less acurate
   NEW.centroid := ST_PointOnSurface(NEW.geometry);
index 98e70a4235e07d2586b685ac4d27e73722ed6964..0c8f4c497e613ee394fa1bda41f1191f34122202 100644 (file)
@@ -145,10 +145,6 @@ BEGIN
   THEN
     SELECT * INTO search_rank, address_rank
       FROM get_postcode_rank(country, postcode);
-
-    IF NOT extended_type = 'A' THEN
-      address_rank := 0;
-    END IF;
   ELSEIF extended_type = 'N' AND place_class = 'highway' THEN
     search_rank = 30;
     address_rank = 0;
index 2fdd281286909c7db801708e266c1c5f1dc5d833..0d4798e8ec95d7ba9e4ad41263280fb70a16be6d 100644 (file)
@@ -139,8 +139,8 @@ Feature: Address computation
             | R1  | boundary | administrative | 6     | 112           | :b0      |
             | R34 | boundary | administrative | 8     | 112 DE        | :b1:E    |
         And the places
-            | osm | class    | type      | addr+postcode | geometry |
-            | R4  | place    | postcode  | 112 DE 34     | :b2:N    |
+            | osm | class    | type        | addr+postcode | geometry |
+            | R4  | boundary | postal_code | 112 DE 34     | :b2:N    |
         And the named places
             | osm | class    | type           | geometry |
             | W93 | highway  | residential    | :w2N     |
index 2b7c8cd86cfc626058ffacde76c02ed3b238ab3a..1a62638dd339e6b028f524573e2b7a5f51131ccd 100644 (file)
@@ -69,10 +69,10 @@ Feature: Import into placex
          | N3   | place | postcode | Y45      | country:gb |
         When importing
         Then placex contains
-         | object | postcode | country_code | rank_search | rank_address |
-         | N1     | E45 2CD  | gb           | 25          | 0 |
-         | N2     | E45 2    | gb           | 23          | 0 |
-         | N3     | Y45      | gb           | 21          | 0 |
+         | object | addr+postcode | country_code | rank_search | rank_address |
+         | N1     | E45 2CD       | gb           | 25          | 5 |
+         | N2     | E45 2         | gb           | 23          | 5 |
+         | N3     | Y45           | gb           | 21          | 5 |
 
     Scenario: wrongly formatted GB postcodes are down-ranked
         Given the places
@@ -82,8 +82,8 @@ Feature: Import into placex
         When importing
         Then placex contains
          | object | country_code | rank_search | rank_address |
-         | N1     | gb           | 30          | 0 |
-         | N2     | gb           | 30          | 0 |
+         | N1     | gb           | 30          | 30 |
+         | N2     | gb           | 30          | 30 |
 
     Scenario: search and address rank for DE postcodes correctly assigned
         Given the places
@@ -95,10 +95,10 @@ Feature: Import into placex
         When importing
         Then placex contains
          | object | country_code | rank_search | rank_address |
-         | N1     | de           | 21          | 0 |
-         | N2     | de           | 30          | 0 |
-         | N3     | de           | 30          | 0 |
-         | N4     | de           | 30          | 0 |
+         | N1     | de           | 21          | 11 |
+         | N2     | de           | 30          | 30 |
+         | N3     | de           | 30          | 30 |
+         | N4     | de           | 30          | 30 |
 
     Scenario: search and address rank for other postcodes are correctly assigned
         Given the places
@@ -115,15 +115,15 @@ Feature: Import into placex
         When importing
         Then placex contains
          | object | country_code | rank_search | rank_address |
-         | N1     | ca           | 21          | 0 |
-         | N2     | ca           | 21          | 0 |
-         | N3     | ca           | 21          | 0 |
-         | N4     | ca           | 21          | 0 |
-         | N5     | ca           | 21          | 0 |
-         | N6     | ca           | 21          | 0 |
-         | N7     | ca           | 25          | 0 |
-         | N8     | ca           | 25          | 0 |
-         | N9     | ca           | 25          | 0 |
+         | N1     | ca           | 21          | 11 |
+         | N2     | ca           | 21          | 11 |
+         | N3     | ca           | 21          | 11 |
+         | N4     | ca           | 21          | 11 |
+         | N5     | ca           | 21          | 11 |
+         | N6     | ca           | 21          | 11 |
+         | N7     | ca           | 25          | 11 |
+         | N8     | ca           | 25          | 11 |
+         | N9     | ca           | 25          | 11 |
 
     Scenario: search and address ranks for boundaries are correctly assigned
         Given the named places