我有一个包含以下属性的索引:名称,地址,城市,州,邮编
我想进行allOptional
搜索,但我不希望城市,州或邮箱匹配而没有名称或地址也匹配。因此,McDonalds
的搜索查询将匹配每个城市/州的所有麦当劳,McDonalds Chicago
将返回芝加哥的所有麦当劳,McDonalds 60007
将返回邮政编码60007中的所有麦当劳。
但Chicago
或Chicago IL
的搜索查询会返回0结果。
我一直在阅读过滤器和facets文档,我认为这应该可以使用过滤器,但我似乎无法弄清楚如何。
答案 0 :(得分:2)
您可以在收到结果后通过后期处理结果解决此问题。
您可以使用匹配响应中的_highlightResult
数据来过滤掉查询在某些属性中不匹配的匹配。
例如,删除查询未在name
或address
属性中匹配的匹配:
var displayedResults = response.hits.filter(hit => {
return hit._highlightResult.name.matchLevel !== 'none' || hit._highlightResult.address.matchLevel !== 'none';
});