使用facet向下钻取大海捞针搜索结果,但不更改facet结果



我的搜索结果显示了用于向下钻取数据的facet选项。当选择一个facet时,它会改变facet结果。因此,如果我最初显示"地点(10)","图像(5)","人物(3)"one_answers"所有(18)"作为faceting选项,并且我点击图像,我仍然希望看到所有其他的,即使搜索结果发生了变化。有什么好办法吗?

我刚刚这样做了,实际上无需重新运行原始搜索查询即可实现。您只需要使用session来存储原始的facet。

下面是我的实际工作代码:

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"或类似的应用程序中,然后使用mysearch。在urls.py中粘贴FacetedSearchView而不是FacetedSearchView。

在模板中使用base_facets来访问它们,而不是使用facets。

效果很好

我也遇到过这样的问题。我们能找到的唯一答案是每次都重新运行查询,而不向下钻取以获得顶级facet结果。

最新更新