From 73c449b97b70e5d5f28db81993b09d86829d0fa5 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Tue, 18 Aug 2020 16:58:58 +0200 Subject: [PATCH] switch indexind to address rank A place needs all lower address rank object indexed to make up the address. The search rank no longer ensures that as it can have a different ordering than the address rank. This switches indexing rank order to address ranks. Non-address objects (with address rank 0) are indexed together with POIs. --- nominatim/nominatim.py | 10 ++++++---- sql/indices_updates.src.sql | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/nominatim/nominatim.py b/nominatim/nominatim.py index 9e720609..f46af9ff 100755 --- a/nominatim/nominatim.py +++ b/nominatim/nominatim.py @@ -47,12 +47,12 @@ class RankRunner(object): def sql_count_objects(self): return """SELECT count(*) FROM placex - WHERE rank_search = {} and indexed_status > 0 + WHERE rank_address = {} and indexed_status > 0 """.format(self.rank) def sql_get_objects(self): return """SELECT place_id FROM placex - WHERE indexed_status > 0 and rank_search = {} + WHERE indexed_status > 0 and rank_address = {} ORDER BY geometry_sector""".format(self.rank) def sql_index_place(self, ids): @@ -114,7 +114,7 @@ class Indexer(object): """ def __init__(self, options): - self.minrank = max(0, options.minrank) + self.minrank = max(1, options.minrank) self.maxrank = min(30, options.maxrank) self.conn = make_connection(options) self.threads = [DBConnection(options) for i in range(options.threads)] @@ -132,10 +132,12 @@ class Indexer(object): log.warning("Starting indexing rank ({} to {}) using {} threads".format( self.minrank, self.maxrank, len(self.threads))) - for rank in range(self.minrank, self.maxrank): + for rank in range(max(1, self.minrank), self.maxrank): self.index(RankRunner(rank)) + if self.maxrank == 30: + self.index(RankRunner(0), 20) self.index(InterpolationRunner(), 20) self.index(RankRunner(self.maxrank), 20) diff --git a/sql/indices_updates.src.sql b/sql/indices_updates.src.sql index 175bfba2..6d4c968e 100644 --- a/sql/indices_updates.src.sql +++ b/sql/indices_updates.src.sql @@ -1,7 +1,7 @@ -- Indices used only during search and update. -- These indices are created only after the indexing process is done. -CREATE INDEX CONCURRENTLY idx_placex_pendingsector ON placex USING BTREE (rank_search,geometry_sector) {ts:address-index} where indexed_status > 0; +CREATE INDEX CONCURRENTLY idx_placex_pendingsector ON placex USING BTREE (rank_address,geometry_sector) {ts:address-index} where indexed_status > 0; CREATE INDEX CONCURRENTLY idx_location_area_country_place_id ON location_area_country USING BTREE (place_id) {ts:address-index}; -- 2.39.5