使用facet深入查看haystack搜索结果,但不更改facet结果

asa*_*ams 2 django facet django-haystack

我有搜索结果显示使用facet选项来深入挖掘数据.选择构面后,它会更改构面结果.因此,如果我最初显示"places(10)","images(5)","people(3)"和"All(18)"作为分面选项,我点击图像我仍然希望看到所有的其他人,即使搜索结果发生了变化.有没有办法做到这一点?

Ric*_*ich 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
Run Code Online (Sandbox Code Playgroud)

将上述视图粘贴在名为"mysearch"或类似的应用程序中,然后在urls.py中使用mysearch.StickyFacetedSearchView而不是FacetedSearchView.

要访问它们,请在模板中使用base_facets,而不是facets.

它完美地运作.

  • 如果用户打开两个标签并在每个标签中执行不同的搜索,这是否有效? (4认同)