]> git.openstreetmap.org Git - nominatim.git/blob - nominatim/tokenizer/sanitizers/strip_brace_terms.py
add slight preference for locating point POIs over POI areas
[nominatim.git] / nominatim / tokenizer / sanitizers / strip_brace_terms.py
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # This file is part of Nominatim. (https://nominatim.org)
4 #
5 # Copyright (C) 2022 by the Nominatim developer community.
6 # For a full list of authors see the git log.
7 """
8 This sanitizer creates additional name variants for names that have
9 addendums in brackets (e.g. "Halle (Saale)"). The additional variant contains
10 only the main name part with the bracket part removed.
11 """
12 from typing import Callable
13
14 from nominatim.tokenizer.sanitizers.base import ProcessInfo
15 from nominatim.tokenizer.sanitizers.config import SanitizerConfig
16
17
18 def create(_: SanitizerConfig) -> Callable[[ProcessInfo], None]:
19     """ Create a name processing function that creates additional name variants
20         for bracket addendums.
21     """
22     def _process(obj: ProcessInfo) -> None:
23         """ Add variants for names that have a bracket extension.
24         """
25         if obj.names:
26             new_names = []
27             for name in (n for n in obj.names if '(' in n.name):
28                 new_name = name.name.split('(')[0].strip()
29                 if new_name:
30                     new_names.append(name.clone(name=new_name))
31
32             obj.names.extend(new_names)
33
34     return _process