pelias / api

HTTP API for Pelias Geocoder
http://pelias.io
MIT License
218 stars 162 forks source link

search: interpolation results included for layers=-address #1673

Open missinglink opened 6 months ago

missinglink commented 6 months ago

When interpolations are generated, they are always of type address, however it's possible for the API to return these results even when the layers are specified in a way that excludes the address layer.

For example: https://pelias.github.io/compare/#/v1/search?layers=street&text=10+Brunswick+Street%2C+VIC

In this case the query specifically requested layers=street yet the result set contains rows from the address layer.

Screenshot 2024-03-28 at 11 52 04

The cause of this issue is in the interpolationShouldExecute predicate, which should take into account the requested layers and not execute if the address layer is not targeted:

https://github.com/pelias/api/blob/e6f532b18577c8436a10651c07e5a2e9f5fdb1ea/routes/v1.js#L182-L187

Note: this should also improve performance for these queries.