From: Sarah Hoffmann Date: Thu, 17 Sep 2020 19:23:23 +0000 (+0200) Subject: Merge pull request #1960 from lonvia/fix-postcodes-duplicated-by-normalization X-Git-Tag: v3.6.0~76 X-Git-Url: https://git.openstreetmap.org/nominatim.git/commitdiff_plain/6f55c67d1688e683769ea6a1fc4ed5aa913ffe97?hp=3aa6e6a365dbe8eef3012c4ab47357ffec3ea5b2 Merge pull request #1960 from lonvia/fix-postcodes-duplicated-by-normalization Make sure that all postcodes have an entry in the word table --- diff --git a/sql/functions/normalization.sql b/sql/functions/normalization.sql index 1a8bbd84..08087172 100644 --- a/sql/functions/normalization.sql +++ b/sql/functions/normalization.sql @@ -81,7 +81,8 @@ BEGIN lookup_word := upper(trim(postcode)); lookup_token := ' ' || make_standard_name(lookup_word); SELECT min(word_id) FROM word - WHERE word_token = lookup_token and class='place' and type='postcode' + WHERE word_token = lookup_token and word = lookup_word + and class='place' and type='postcode' INTO return_word_id; IF return_word_id IS NULL THEN return_word_id := nextval('seq_word'); diff --git a/test/bdd/db/import/postcodes.feature b/test/bdd/db/import/postcodes.feature index 863a9b3a..3d1dc489 100644 --- a/test/bdd/db/import/postcodes.feature +++ b/test/bdd/db/import/postcodes.feature @@ -137,3 +137,22 @@ Feature: Import of postcodes And word contains | word | class | type | | 01982 | place | postcode | + + Scenario: Different postcodes with the same normalization can both be found + Given the places + | osm | class | type | addr+postcode | addr+housenumber | geometry | + | N34 | place | house | EH4 7EA | 111 | country:gb | + | N35 | place | house | E4 7EA | 111 | country:gb | + When importing + Then location_postcode contains exactly + | country | postcode | geometry | + | gb | EH4 7EA | country:gb | + | gb | E4 7EA | country:gb | + When searching for "EH4 7EA" + Then results contain + | type | placename | + | postcode | EH4 7EA | + When searching for "E4 7EA" + Then results contain + | type | placename | + | postcode | E4 7EA |