我的搜索结果显示了使用构面选项来深入挖掘数据。选择构面后,它会更改构面结果。因此,如果我最初显示“places(10)”,“images(5)”,“people(3)”和“All(18)”作为分面选项,我点击图片我仍然希望看到所有的其他人,即使搜索结果发生了变化。有没有办法做到这一点?
答案 0 :(得分:7)
我刚刚这样做了,如果不重新运行原始搜索查询,它实际上是可以实现的。你只需要使用session来存储原始方面。
这是我的实际工作代码:
from haystack.views import FacetedSearchView
class StickyFacetedSearchView (FacetedSearchView):
def top_level_facets(self):
"""
When selecting a facet to drill down the results,
we need to keep the top level facet counts
"""
stored_query = self.request.session.get('query', None)
if stored_query != self.query:
self.request.session['query'] = self.query
self.request.session['facet_counts'] = self.results.facet_counts()
return self.request.session['facet_counts'] # Fail loudly
def extra_context(self):
""" add base_facets to extra_context"""
extra = super(StickyFacetedSearchView, self).extra_context()
extra['base_facets'] = self.top_level_facets()
return extra
将上述视图粘贴在名为“mysearch”或类似应用的应用中,然后在urls.py中使用mysearch.StickyFacetedSearchView而不是FacetedSearchView。
要访问它们,请在模板中使用base_facets,而不是facets。
效果很好。
答案 1 :(得分:1)
我也遇到过这个问题。我们唯一能找到的答案是每次重新运行查询而不进行向下钻取以获得顶级构面结果。