Skip to content

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

@missinglink

Description

@missinglink

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:

api/routes/v1.js

Lines 182 to 187 in e6f532b

const interpolationShouldExecute = all(
not(predicates.hasRequestErrors),
isInterpolationEnabled,
predicates.hasParsedTextProperties.all('housenumber', 'street'),
predicates.hasResultsAtLayers('street')
);

Note: this should also improve performance for these queries.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions