]> git.openstreetmap.org Git - nominatim.git/commitdiff
change indexing order for interpolations
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 31 May 2022 12:16:06 +0000 (14:16 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Thu, 2 Jun 2022 13:16:46 +0000 (15:16 +0200)
Interpolations are now indexed after rank 30 objects. The housenumber
nodes no longer need information from the interpolations while the
interpolations can make use of precomputed postcodes.

nominatim/indexer/indexer.py
test/python/indexer/test_indexing.py

index 98bb52114bedaa8bc220f6a595d2c1dcf88a2283..555f8704a19c6796da4b97a724cd363d183f7f12 100644 (file)
@@ -160,15 +160,12 @@ class Indexer:
                     minrank, maxrank, self.num_threads)
 
         with self.tokenizer.name_analyzer() as analyzer:
                     minrank, maxrank, self.num_threads)
 
         with self.tokenizer.name_analyzer() as analyzer:
-            for rank in range(max(1, minrank), maxrank):
-                self._index(runners.RankRunner(rank, analyzer))
+            for rank in range(max(1, minrank), maxrank + 1):
+                self._index(runners.RankRunner(rank, analyzer), 20 if rank == 30 else 1)
 
             if maxrank == 30:
                 self._index(runners.RankRunner(0, analyzer))
                 self._index(runners.InterpolationRunner(analyzer), 20)
 
             if maxrank == 30:
                 self._index(runners.RankRunner(0, analyzer))
                 self._index(runners.InterpolationRunner(analyzer), 20)
-                self._index(runners.RankRunner(30, analyzer), 20)
-            else:
-                self._index(runners.RankRunner(maxrank, analyzer))
 
 
     def index_postcodes(self):
 
 
     def index_postcodes(self):
index e303f381e0cea86d3559993942f7f99d3698911d..45c68a33941a2b24141ff1c08e0e82c233efe215 100644 (file)
@@ -177,25 +177,16 @@ def test_index_all_by_rank(test_db, threads, test_tokenizer):
         SELECT count(*) FROM placex p WHERE rank_address > 0
           AND indexed_date >= (SELECT min(indexed_date) FROM placex o
                                WHERE p.rank_address < o.rank_address)""") == 0
         SELECT count(*) FROM placex p WHERE rank_address > 0
           AND indexed_date >= (SELECT min(indexed_date) FROM placex o
                                WHERE p.rank_address < o.rank_address)""") == 0
-    # placex rank < 30 objects come before interpolations
+    # placex address ranked objects come before interpolations
     assert test_db.scalar(
     assert test_db.scalar(
-        """SELECT count(*) FROM placex WHERE rank_address < 30
+        """SELECT count(*) FROM placex WHERE rank_address 0
              AND indexed_date >
                    (SELECT min(indexed_date) FROM location_property_osmline)""") == 0
              AND indexed_date >
                    (SELECT min(indexed_date) FROM location_property_osmline)""") == 0
-    # placex rank = 30 objects come after interpolations
+    # rank 0 comes after all other placex objects
     assert test_db.scalar(
     assert test_db.scalar(
-        """SELECT count(*) FROM placex WHERE rank_address = 30
-             AND indexed_date <
-                   (SELECT max(indexed_date) FROM location_property_osmline)""") == 0
-    # rank 0 comes after rank 29 and before rank 30
-    assert test_db.scalar(
-        """SELECT count(*) FROM placex WHERE rank_address < 30
+        """SELECT count(*) FROM placex WHERE rank_address > 0
              AND indexed_date >
                    (SELECT min(indexed_date) FROM placex WHERE rank_address = 0)""") == 0
              AND indexed_date >
                    (SELECT min(indexed_date) FROM placex WHERE rank_address = 0)""") == 0
-    assert test_db.scalar(
-        """SELECT count(*) FROM placex WHERE rank_address = 30
-             AND indexed_date <
-                   (SELECT max(indexed_date) FROM placex WHERE rank_address = 0)""") == 0
 
 
 @pytest.mark.parametrize("threads", [1, 15])
 
 
 @pytest.mark.parametrize("threads", [1, 15])