X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/5ba75df507617162907c2b42a7825ee406218582..4885fdf0f97d0615027fa6b2ed410e75ae1a2e20:/nominatim/tokenizer/sanitizers/clean_postcodes.py diff --git a/nominatim/tokenizer/sanitizers/clean_postcodes.py b/nominatim/tokenizer/sanitizers/clean_postcodes.py index 42beea37..d1edc60d 100644 --- a/nominatim/tokenizer/sanitizers/clean_postcodes.py +++ b/nominatim/tokenizer/sanitizers/clean_postcodes.py @@ -75,6 +75,12 @@ class _PostcodeSanitizer: else: raise UsageError(f"Invalid entry 'postcode' for country '{ccode}'") + default_pattern = config.get('default-pattern') + if default_pattern is not None and isinstance(default_pattern, str): + self.default_matcher = _PostcodeMatcher('', {'pattern': default_pattern}) + else: + self.default_matcher = None + def __call__(self, obj): if not obj.address: @@ -92,7 +98,7 @@ class _PostcodeSanitizer: obj.address.pop(pos) else: postcode.name = formatted[0] - postcode.set_attr('lookup', formatted[1]) + postcode.set_attr('variant', formatted[1]) def scan(self, postcode, country): @@ -103,14 +109,16 @@ class _PostcodeSanitizer: if country in self.country_without_postcode: return None - matcher = self.country_matcher.get(country) - if matcher is not None: - match = matcher.match(postcode) - if match is None: - return None - return matcher.normalize(match), ' '.join(match.groups()) + matcher = self.country_matcher.get(country, self.default_matcher) + if matcher is None: + return postcode.upper(), '' + + match = matcher.match(postcode) + if match is None: + return None + + return matcher.normalize(match), ' '.join(match.groups()) - return postcode.upper(), ''