]> git.openstreetmap.org Git - nominatim.git/commitdiff
remove lookup by address only
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 6 Aug 2023 17:20:10 +0000 (19:20 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 6 Aug 2023 19:00:10 +0000 (21:00 +0200)
There are too many lookups where the address is very frequent,
even when many address parts are present.

nominatim/api/search/db_search_builder.py
test/python/api/search/test_db_search_builder.py

index 7c6d13f09dbd9fbeacac4b631f2a04f8be280cfa..8dd435d0b991d20571d7a59bccaefb28d70aa8a0 100644 (file)
@@ -212,13 +212,6 @@ class SearchBuilder:
 
         exp_count = min(exp_count, min(t.count for t in addr_partials)) \
                     if addr_partials else exp_count
 
         exp_count = min(exp_count, min(t.count for t in addr_partials)) \
                     if addr_partials else exp_count
-        if exp_count < 1000 and len(addr_tokens) > 3 and partials_indexed:
-            # Lookup by address partials and restrict results through name terms.
-            # Give this a small penalty because lookups in the address index are
-            # more expensive
-            yield penalty + exp_count/5000, exp_count,\
-                  dbf.lookup_by_addr(name_tokens, addr_tokens)
-            return
 
         # Partial term to frequent. Try looking up by rare full names first.
         name_fulls = self.query.get_tokens(name, TokenType.WORD)
 
         # Partial term to frequent. Try looking up by rare full names first.
         name_fulls = self.query.get_tokens(name, TokenType.WORD)
index 0e5a8bfcd47d0b8ac13fa36a6290d1c383b5b858..d1ad320b137f517b2d06ee74384f70e49944d7f2 100644 (file)
@@ -68,7 +68,7 @@ def test_country_search_with_country_restriction():
     assert set(search.countries.values) == {'en'}
 
 
     assert set(search.countries.values) == {'en'}
 
 
-def test_country_search_with_confllicting_country_restriction():
+def test_country_search_with_conflicting_country_restriction():
     q = make_query([(1, TokenType.COUNTRY, [(2, 'de'), (3, 'en')])])
     builder = SearchBuilder(q, SearchDetails.from_kwargs({'countries': 'fr'}))
 
     q = make_query([(1, TokenType.COUNTRY, [(2, 'de'), (3, 'en')])])
     builder = SearchBuilder(q, SearchDetails.from_kwargs({'countries': 'fr'}))
 
@@ -369,20 +369,6 @@ def test_infrequent_partials_in_name():
             {('name_vector', 'lookup_all'), ('nameaddress_vector', 'restrict')}
 
 
             {('name_vector', 'lookup_all'), ('nameaddress_vector', 'restrict')}
 
 
-def test_frequent_partials_in_name_but_not_in_address():
-    searches = make_counted_searches(10000, 1, 1, 1, num_address_parts=4)
-
-    assert len(searches) == 1
-    search = searches[0]
-
-    assert isinstance(search, dbs.PlaceSearch)
-    assert len(search.lookups) == 2
-    assert len(search.rankings) == 2
-
-    assert set((l.column, l.lookup_type) for l in search.lookups) == \
-            {('nameaddress_vector', 'lookup_all'), ('name_vector', 'restrict')}
-
-
 def test_frequent_partials_in_name_and_address():
     searches = make_counted_searches(9999, 1, 9999, 1)
 
 def test_frequent_partials_in_name_and_address():
     searches = make_counted_searches(9999, 1, 9999, 1)