1
0
Fork 0

crowning part of matching on missing names

This commit is contained in:
Mateusz Konieczny 2025-04-17 12:45:44 +02:00
parent c6727b19fb
commit 388d9a3333
2 changed files with 12 additions and 0 deletions

View file

@ -25,10 +25,15 @@ def name_giving_keys():
def is_matching_any_name_part_to_osm_tags(name_part_list, osm_tags):
# if changing anything here, please also change this_tag_lists_match debug code in tests
for part in name_part_list:
name_giving_key_present = False
for key in name_giving_keys():
if key in osm_tags:
name_giving_key_present = True
if matching_name_part(part, osm_tags[key]):
return True
if name_giving_key_present == False:
return True # nameless objects are matching, as matcher is supposed to be eager
# (we want false positives rather false negatives at that stage)
return False

View file

@ -94,11 +94,15 @@ class MatchingTests(unittest.TestCase):
print("claimed name match", matcher.is_matching_any_name_part_to_osm_tags(filter_names, osm_tags))
# replicates matcher.is_matching_any_name_part_to_osm_tags
name_part_list = filter_names
name_giving_key_present = False
for part in name_part_list:
for key in matcher.name_giving_keys():
if key in osm_tags:
name_giving_key_present = True
if matcher.matching_name_part(part, osm_tags[key]):
print(part, "matches to osm_tags[key] with value", osm_tags[key], "for key", key)
if name_giving_key_present == False:
print("matched as nameless one")
print(matcher.filter_with_fuzzy_name_match(osm_data, filter_names))
print(str(matches[0]))
@ -113,6 +117,9 @@ class MatchingTests(unittest.TestCase):
def test_reject_mismatches_based_on_object_name(self):
self.assertEqual(self.this_tag_lists_match({'brand': "Titan", 'shop': 'pastry'}, {'brand': "Sauron", 'shop': 'pastry'}), False)
def test_accept_matches_for_nameless_ones(self):
self.assertEqual(self.this_tag_lists_match({'brand': "Titan", 'amenity': 'ice_cream'}, {'shop': 'ice_cream'}), True)
def test_accept_matches_for_ice_cream_synonyms(self):
self.assertEqual(self.this_tag_lists_match({'brand': "Titan", 'amenity': 'ice_cream'}, {'brand': "Titan", 'shop': 'ice_cream'}), True)