import nominatim.api.results as nres
from nominatim.api.search.db_search_fields import SearchData, WeightedCategories
-#pylint: disable=singleton-comparison
+#pylint: disable=singleton-comparison,not-callable
#pylint: disable=too-many-branches,too-many-arguments,too-many-locals,too-many-statements
def _select_placex(t: SaFromClause) -> SaSelect:
details: SearchDetails) -> nres.SearchResults:
""" Look up the country in the fallback country tables.
"""
+ # Avoid the fallback search when this is a more search. Country results
+ # usually are in the first batch of results and it is not possible
+ # to exclude these fallbacks.
+ if details.excluded:
+ return nres.SearchResults()
+
t = conn.t.country_name
tgrid = conn.t.country_grid
sql = sql.where(tsearch.c.country_code.in_(self.countries.values))
if self.postcodes:
+ # if a postcode is given, don't search for state or country level objects
+ sql = sql.where(tsearch.c.address_rank > 9)
tpc = conn.t.postcode
if self.expected_count > 1000:
# Many results expected. Restrict by postcode.
numerals, details)
), else_=None)
else:
- interpol_sql = sa.literal(None)
- tiger_sql = sa.literal(None)
+ interpol_sql = sa.literal_column('NULL')
+ tiger_sql = sa.literal_column('NULL')
unsort = sa.select(inner, place_sql.scalar_subquery().label('placex_hnr'),
interpol_sql.label('interpol_hnr'),