mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-10 12:04:06 +00:00
drop search_rank column from search_name
This is no longer needed for the initial lookup.
This commit is contained in:
@@ -1138,10 +1138,10 @@ BEGIN
|
||||
NEW.token_info, NEW.centroid);
|
||||
|
||||
IF array_length(name_vector, 1) is not NULL THEN
|
||||
INSERT INTO search_name (place_id, search_rank, address_rank,
|
||||
INSERT INTO search_name (place_id, address_rank,
|
||||
importance, country_code, name_vector,
|
||||
nameaddress_vector, centroid)
|
||||
VALUES (NEW.place_id, NEW.rank_search, NEW.rank_address,
|
||||
VALUES (NEW.place_id, NEW.rank_address,
|
||||
NEW.importance, NEW.country_code, name_vector,
|
||||
nameaddress_vector, NEW.centroid);
|
||||
{% if debug %}RAISE WARNING 'Place added to search table';{% endif %}
|
||||
@@ -1311,10 +1311,10 @@ BEGIN
|
||||
{% if debug %}RAISE WARNING 'added to search name (full)';{% endif %}
|
||||
|
||||
{% if not db.reverse_only %}
|
||||
INSERT INTO search_name (place_id, search_rank, address_rank,
|
||||
INSERT INTO search_name (place_id, address_rank,
|
||||
importance, country_code, name_vector,
|
||||
nameaddress_vector, centroid)
|
||||
VALUES (NEW.place_id, NEW.rank_search, NEW.rank_address,
|
||||
VALUES (NEW.place_id, NEW.rank_address,
|
||||
NEW.importance, NEW.country_code, name_vector,
|
||||
nameaddress_vector, NEW.centroid);
|
||||
{% endif %}
|
||||
|
||||
@@ -12,7 +12,6 @@ DROP TABLE IF EXISTS search_name;
|
||||
CREATE TABLE search_name (
|
||||
place_id BIGINT NOT NULL,
|
||||
importance FLOAT NOT NULL,
|
||||
search_rank SMALLINT NOT NULL,
|
||||
address_rank SMALLINT NOT NULL,
|
||||
name_vector integer[] NOT NULL,
|
||||
nameaddress_vector integer[] NOT NULL,
|
||||
|
||||
@@ -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'))
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# This file is part of Nominatim. (https://nominatim.org)
|
||||
#
|
||||
# Copyright (C) 2025 by the Nominatim developer community.
|
||||
# Copyright (C) 2026 by the Nominatim developer community.
|
||||
# For a full list of authors see the git log.
|
||||
"""
|
||||
SQLAlchemy definitions for all tables used by the frontend.
|
||||
@@ -112,7 +112,6 @@ class SearchTables:
|
||||
'search_name', meta,
|
||||
sa.Column('place_id', sa.BigInteger),
|
||||
sa.Column('importance', sa.Float),
|
||||
sa.Column('search_rank', sa.SmallInteger),
|
||||
sa.Column('address_rank', sa.SmallInteger),
|
||||
sa.Column('name_vector', IntArray),
|
||||
sa.Column('nameaddress_vector', IntArray),
|
||||
|
||||
Reference in New Issue
Block a user