我在其中一个项目中使用了django-haystack
,并且使用faceting
功能来显示不同字段的构面。目前,该方面是这个样子:如何在干草堆面上禁用嵌套(挖掘)
Places
- New York (51)
- Los Angeles (22)
- Chicago (20)
- Houston (38)
- Philadelphia (15)
Price Range (in USD)
- $2000 - $4000 (10)
- $4000 - $6000 (15)
- $6000 - $10000 (8)
- $10000 - $15000 (4)
目前发生的事情是,如果说我点击任何地方(出纽约)的联系,为Places
所述的小计数更新。它看起来是这样的:
Places
- New York (51)
- Chicago (3)
- Los Angeles (1)
- Houston (0)
- Philadelphia (0)
,然后,如果我点击另一个地方说,洛杉矶就像
Places
- Los Angeles (22)
- Philadelphia (3)
- New York (1)
- Chicago (0)
- Houston (0)
计数变化的东西是什么,我希望做的是不是选择向下钻取方面,但所有其他方面。所以如果我点击一个地方,我会希望地方方面保持在同一顺序,并显示原始计数,但其他方面显示嵌套结果计数。所以如果我点击上面提到的原始方面的其中一个地方,结果看起来像这样。 (说我点击纽约:)
Places #The Original Count and order is maintained here
- New York (51)
- Los Angeles (22)
- Chicago (20)
- Houston (38)
- Philadelphia (15)
Price Range (in USD) # This facet has the updated result count
- $2000 - $4000 (2)
- $4000 - $6000 (5)
- $6000 - $10000 (1)
- $10000 - $15000 (0)
我该如何做到这一点?
我在stackflow上也经历了类似的question这里,但我没有找到任何可靠的答案。
@ DanielRoseman的答案建议每次用户通过构面请求时重新运行一个空查询。我不确定是否对每个请求进行两次查询是一个非常好的主意。这不会减慢整个过程吗?
@ Rich的答案建议将初始计数保存到会话中,并将其传递到每个请求的上下文中。这似乎是一个更好的解决方案,但我和@StephenPaulger一样担心,因为大部分时间,使用我们产品的用户将打开多个浏览器选项卡,并且这会混淆其他选项卡中的计数。
还有什么可以做到这一点。如此重要的功能如何不是干草堆项目本身的一部分?
我碰到了同样的问题做到这一点,并最终重新运行查询。我不认为有一个标准的方法来解决这个问题,我想这对干草堆的开发者来说是一个很好的功能要求。 – 2013-05-06 14:17:17
@FacundoOlano:我终于写了我自己的Facet对象,它们跟踪原始计数和新计数并将它们传递给模板,而不是直接使用干草堆的'facet_counts()'方法。 – Amyth 2013-05-07 03:01:57