2017-09-06 60 views
0

我已经包括这些属性的索引:姓名,地址,城市,州,邮编强制查询匹配不止一个属性

我想做一个allOptional搜索,但我不希望各市,州,或邮编匹配没有名称或地址也匹配。所以McDonalds搜索查询会匹配所有麦当劳在每一个城市/州,McDonalds Chicago将返回所有麦当劳在芝加哥和McDonalds 60007将返回所有麦当劳在邮政编码60007.

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

我一直在阅读过滤器和构面文档,我认为这应该是可能的与过滤器,但我似乎无法弄清楚如何。

回答

0

您可以在渲染之前通过后处理结果解决此问题。

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

例如删除其中查询不无论是在nameaddress属性匹配命中:

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

嗯,没想到这一点。这不会甩掉返回结果的数量吗?我想我可以要求比实际想要的更多,然后过滤结果。 –

+0

你是对的,它会使结果不准确,所以根据你的使用情况,这可能是不可接受的 – alexandremeunier