mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-11 21:34:06 +00:00
drop search_rank column from search_name
This is no longer needed for the initial lookup.
This commit is contained in:
@@ -155,7 +155,7 @@ class AddressSearch(base.AbstractSearch):
|
||||
for ranking in self.rankings:
|
||||
penalty += ranking.sql_penalty(t)
|
||||
|
||||
sql = sa.select(t.c.place_id, t.c.search_rank, t.c.address_rank,
|
||||
sql = sa.select(t.c.place_id, t.c.address_rank,
|
||||
t.c.country_code, t.c.centroid,
|
||||
t.c.name_vector, t.c.nameaddress_vector,
|
||||
t.c.importance, penalty.label('penalty'))
|
||||
@@ -199,7 +199,7 @@ class AddressSearch(base.AbstractSearch):
|
||||
|
||||
inner = sql.limit(10000).order_by(sa.desc(sa.text('importance'))).subquery()
|
||||
|
||||
sql = sa.select(inner.c.place_id, inner.c.search_rank, inner.c.address_rank,
|
||||
sql = sa.select(inner.c.place_id, inner.c.address_rank,
|
||||
inner.c.country_code, inner.c.centroid, inner.c.importance,
|
||||
inner.c.penalty)
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ class PlaceSearch(base.AbstractSearch):
|
||||
for ranking in self.rankings:
|
||||
penalty += ranking.sql_penalty(t)
|
||||
|
||||
sql = sa.select(t.c.place_id, t.c.search_rank, t.c.address_rank,
|
||||
sql = sa.select(t.c.place_id, t.c.address_rank,
|
||||
t.c.country_code, t.c.centroid,
|
||||
t.c.name_vector, t.c.nameaddress_vector,
|
||||
t.c.importance)
|
||||
@@ -101,12 +101,13 @@ class PlaceSearch(base.AbstractSearch):
|
||||
|
||||
if details.excluded:
|
||||
sql = sql.where(base.exclude_places(t))
|
||||
if details.min_rank > 0:
|
||||
sql = sql.where(sa.or_(t.c.address_rank >= MIN_RANK_PARAM,
|
||||
t.c.search_rank >= MIN_RANK_PARAM))
|
||||
if details.max_rank < 30:
|
||||
sql = sql.where(sa.or_(t.c.address_rank <= MAX_RANK_PARAM,
|
||||
t.c.search_rank <= MAX_RANK_PARAM))
|
||||
# Do not restrict ranks too much yet because rank restriction
|
||||
# currently also depends on search_rank to account for state-cities
|
||||
# like Berlin.
|
||||
if details.max_rank < 26:
|
||||
sql = sql.where(t.c.address_rank < 26)
|
||||
elif details.max_rank < 30:
|
||||
sql = sql.where(t.c.address_rank < MAX_RANK_PARAM)
|
||||
|
||||
sql = sql.add_columns(penalty.label('penalty'))
|
||||
|
||||
@@ -114,7 +115,7 @@ class PlaceSearch(base.AbstractSearch):
|
||||
.order_by(sa.desc(sa.text('importance')))\
|
||||
.subquery()
|
||||
|
||||
sql = sa.select(inner.c.place_id, inner.c.search_rank, inner.c.address_rank,
|
||||
sql = sa.select(inner.c.place_id, inner.c.address_rank,
|
||||
inner.c.country_code, inner.c.centroid, inner.c.importance,
|
||||
inner.c.penalty)
|
||||
|
||||
@@ -130,7 +131,7 @@ class PlaceSearch(base.AbstractSearch):
|
||||
|
||||
inner = sql.subquery()
|
||||
|
||||
sql = sa.select(inner.c.place_id, inner.c.search_rank, inner.c.address_rank,
|
||||
sql = sa.select(inner.c.place_id, inner.c.address_rank,
|
||||
inner.c.country_code, inner.c.centroid, inner.c.importance,
|
||||
inner.c.penalty)\
|
||||
.where(inner.c.penalty - inner.c.importance < inner.c.min_penalty + 0.5)
|
||||
@@ -174,6 +175,13 @@ class PlaceSearch(base.AbstractSearch):
|
||||
sql = sql.order_by(penalty - tsearch.c.importance)
|
||||
sql = sql.add_columns(tsearch.c.importance)
|
||||
|
||||
if details.min_rank > 0:
|
||||
sql = sql.where(sa.or_(t.c.rank_address >= MIN_RANK_PARAM,
|
||||
t.c.rank_search >= MIN_RANK_PARAM))
|
||||
if details.max_rank < 30:
|
||||
sql = sql.where(sa.or_(t.c.rank_address <= MAX_RANK_PARAM,
|
||||
t.c.rank_search <= MAX_RANK_PARAM))
|
||||
|
||||
sql = sql.add_columns(penalty.label('accuracy'))\
|
||||
.order_by(sa.text('accuracy'))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user