【发布时间】:2013-05-04 06:12:52
【问题描述】:
我在我的一个项目中使用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 一样担心,因为大多数时候使用我们产品的用户会打开多个浏览器选项卡,这会弄乱其他选项卡中的计数。
还有什么可以做的来实现这一点。为什么这么重要的功能不是干草堆项目本身的一部分?
【问题讨论】:
-
我遇到了同样的问题,最后重新运行了查询。我不认为有解决这个问题的标准方法,我想这对 haystack 的开发人员来说是一个很好的功能请求。
-
@FacundoOlano:我最终编写了自己的 Facet 对象,跟踪原始计数和新计数并将它们传递给模板,而不是直接使用 haystack 的
facet_counts()方法。跨度>
标签: django count django-haystack faceted-search