mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-12-25 05:52:32 +03:00
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.
This commit is contained in:
parent
1529666232
commit
73c449b97b
@ -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)
|
||||
|
@ -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};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user