强制查询以匹配多个属性

时间:2017-09-06 19:51:31

标签: algolia

我有一个包含以下属性的索引:名称,地址,城市,州,邮编

我想进行allOptional搜索,但我不希望城市,州或邮箱匹配而没有名称或地址也匹配。因此,McDonalds的搜索查询将匹配每个城市/州的所有麦当劳,McDonalds Chicago将返回芝加哥的所有麦当劳,McDonalds 60007将返回邮政编码60007中的所有麦当劳。

ChicagoChicago IL的搜索查询会返回0结果。

我一直在阅读过滤器和facets文档,我认为这应该可以使用过滤器,但我似乎无法弄清楚如何。

1 个答案:

答案 0 :(得分:2)

您可以在收到结果后通过后期处理结果解决此问题。

您可以使用匹配响应中的_highlightResult数据来过滤掉查询在某些属性中不匹配的匹配。

例如,删除查询未在nameaddress属性中匹配的匹配:

var displayedResults = response.hits.filter(hit => {
    return hit._highlightResult.name.matchLevel !== 'none' || hit._highlightResult.address.matchLevel !== 'none';
});