From: Sarah Hoffmann Date: Fri, 8 May 2015 17:34:33 +0000 (+0200) Subject: merge addr:postcode from houses into search index of attached road X-Git-Tag: v.2.5.0~53 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/2f8a29ba39e4ca995334f2702985afa761bfffbd merge addr:postcode from houses into search index of attached road Makes house number searchable by postcode when the postcode is only available in addr:postcode. --- diff --git a/sql/functions.sql b/sql/functions.sql index c54bcad9..3c8f16e0 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -1403,6 +1403,26 @@ BEGIN select * from search_name where place_id = NEW.parent_place_id INTO location; NEW.calculated_country_code := location.country_code; + -- Merge the postcode into the parent's address if necessary XXXX + IF NEW.postcode IS NOT NULL THEN + isin_tokens := '{}'::int[]; + address_street_word_id := getorcreate_word_id(make_standard_name(NEW.postcode)); + IF address_street_word_id is not null + and not ARRAY[address_street_word_id] <@ location.nameaddress_vector THEN + isin_tokens := isin_tokens || address_street_word_id; + END IF; + address_street_word_id := getorcreate_name_id(make_standard_name(NEW.postcode)); + IF address_street_word_id is not null + and not ARRAY[address_street_word_id] <@ location.nameaddress_vector THEN + isin_tokens := isin_tokens || address_street_word_id; + END IF; + IF isin_tokens != '{}'::int[] THEN + UPDATE search_name + SET nameaddress_vector = search_name.nameaddress_vector || isin_tokens + WHERE place_id = NEW.parent_place_id; + END IF; + END IF; + --RAISE WARNING '%', NEW.name; -- If there is no name it isn't searchable, don't bother to create a search record IF NEW.name is NULL THEN diff --git a/tests/features/db/import/search_terms.feature b/tests/features/db/import/search_terms.feature index 642b3ea8..f68fe61c 100644 --- a/tests/features/db/import/search_terms.feature +++ b/tests/features/db/import/search_terms.feature @@ -26,3 +26,17 @@ Feature: Creation of search terms Then search_name table contains | place_id | name_vector | nameaddress_vector | N1 | foo | the road + + Scenario: Roads take over the postcode from attached houses + Given the scene roads-with-pois + And the place nodes + | osm_id | class | type | housenumber | postcode | street | geometry + | 1 | place | house | 1 | 12345 | North St |:p-S1 + And the place ways + | osm_id | class | type | name | geometry + | 1 | highway | residential | North St | :w-north + When importing + Then search_name table contains + | place_id | nameaddress_vector + | W1 | 12345 +