2

我的搜索结果显示了用于深入研究数据的方面选项。当一个构面被选中时,它会改变构面结果。因此,如果我最初将“地点 (10)”、“图像 (5)”、“人物 (3)”和“全部 (18)”显示为分面选项,并且我单击图像,我仍然希望查看所有即使搜索结果发生了变化,其他人也是如此。有没有好的方法来做到这一点?

4

2 回答 2

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。

它完美地工作。

于 2011-09-12T05:17:56.567 回答
1

我也遇到了这个问题。我们能找到的唯一答案是每次都重新运行查询,而无需下钻以获得顶级构面结果。

于 2011-08-01T06:12:50.060 回答