fix order when searching for addr:* components

When matching addr:* components the preference was given to
matches that do not intersect with the place.
This commit is contained in:
Sarah Hoffmann 2022-05-31 16:57:37 +02:00
parent ecee5cf801
commit bd0e157b91
2 changed files with 21 additions and 1 deletions

View File

@ -96,7 +96,7 @@ BEGIN
AND rank_address between from_rank and to_rank AND rank_address between from_rank and to_rank
AND token_matches_address(token_info, key, keywords) AND token_matches_address(token_info, key, keywords)
GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid
ORDER BY bool_or(ST_Intersects(geometry, feature)), distance LIMIT 1; ORDER BY bool_or(ST_Intersects(geometry, feature)) DESC, distance LIMIT 1;
RETURN r; RETURN r;
END IF; END IF;
{% endfor %} {% endfor %}

View File

@ -506,3 +506,23 @@ Feature: Address computation
Then results contain Then results contain
| osm | display_name | | osm | display_name |
| N2 | Leftside, Wonderway, Left | | N2 | Leftside, Wonderway, Left |
Scenario: addr:* tags always match the closer area
Given the grid
| 1 | | | | 2 | | 5 |
| | | | | | | |
| | 10| 11| | | | |
| 4 | | | | 3 | | 6 |
And the places
| osm | class | type | admin | name | geometry |
| R1 | boundary | administrative | 8 | Left | (1,2,3,4,1) |
| R2 | boundary | administrative | 8 | Left | (2,3,6,5,2) |
And the places
| osm | class | type | name | addr+city | geometry |
| W1 | highway | primary | Wonderway | Left | 10,11 |
When importing
Then place_addressline doesn't contain
| object | address |
| W1 | R2 |