我正在尝试为我的Solr服务实现方面,但我对我所看到的内容感到有些困惑 . 我理解标签和排除用于忽略特定的过滤器计数,这样会发生这样的事情:
[] Nike 55
[] Adidas 54
[] New Balance 32
[] Black 25
[] Blue 26
[] Red 29
[] Yellow 23
---------------
[X] Nike 55
[] Adidas 54
[] New Balance 32
[] Black 20
[] Blue 15
[] Red 13
[] Yellow 13
[X] Nike 20
[] Adidas 0
[] New Balance 0
[X] Black 20
[] Blue 15
[] Red 13
[] Yellow 13
我了解在上述情况下,我们会过滤品牌的Solr查询,并在品牌过滤器/方面传递标签/排除项,以便计数仅在品牌上保持相同 . 然后,我们按颜色进行过滤,并保持THOSE计数相同,同时让其他计数(品牌)发生变化 .
但是,这是我被卡住的地方 . 在较大的网站上(如Newegg,亚马逊等......)我注意到情况并非如此 . 当我通过我的第一个过滤器选择时,我选择的过滤器计数不会更改,而其他计数则会更改 .
[X] Nike 51
[] Adidas 54
[] New Balance 32
[] Black 20
[] Blue 15
[] Red 13
[] Yellow 13
然后,当我通过第二个过滤器(与第一个过滤器不同)进行选择时,第二个过滤器计数不会改变,但第一个过滤器计数会以不会使计数归零的方式进行计数,如下所示:
[X] Nike 8
[] Adidas 12
[] New Balance 5
[X] Black 20
[] Blue 15
[] Red 13
[] Yellow 13
这里发生了什么?我觉得我正在发送方面和过滤器来错误地解决问题 . 我只为最近选择的过滤器发送标签和排除 . 这总是会根据最近的选择更改其他计数 . 但在我概述的最后一个案例中,即使我只是在寻找Black Nike鞋子,品牌过滤器也没有归零 . 我仍然得到阿迪达斯和新 balancer 的预期数量 . 对不起,这篇文章太长了,但我想不出一个很好的方法来解释它没有例子 .
1 回答
您的案例中的问题是 you filter your results second time you forget to tag you brand filter query .
让我们举个例子来解决你的问题 . 请参考我正在使用的查询
用户选择“Nike”
首先,您从Brand facet中选择“Nike” . 我们添加了标有品牌的过滤条件,以排除结果并重新发出请求
我们得到的回应
用户选择“黑色”
现在用户从颜色方面选择“黑色” . 我们添加了另一个标记为颜色的新过滤器查询,以将其从结果中排除 .
我们得到的回应