django - 使用构面深入挖掘干草堆搜索结果,但不更改构面结果

标签 django django-haystack facet

我的搜索结果显示了用于深入挖掘数据的方面选项。选择某个方面后,它会更改该方面的结果。因此,如果我最初显示“地点 (10)”、“图像 (5)”、“人物 (3)”和“全部 (18)”作为分面选项,并且我单击图像,我仍然希望看到所有即使搜索结果发生了变化,其他人也是如此。有什么好的办法吗?

最佳答案

我刚刚这样做了,实际上不需要重新运行原始搜索查询就可以实现。你只需要使用 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

将上述 View 粘贴到名为“mysearch”或类似应用程序中,然后在 urls.py 中使用 mysearch.StickyFacetedSearchView 而不是 FacetedSearchView。

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

它工作得很好。

关于django - 使用构面深入挖掘干草堆搜索结果,但不更改构面结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893732/

相关文章:

django - 如何在 Django 中安装 Solr 以与 Haystack 一起使用

python - 测试 Django : reason for unexpected http status code

python - 如何在 IntegerField 上为 None 过滤 Haystack SearchQuerySet

django - 为什么 celery 干草堆?

python - 干草堆elasticsearch RealtimeSignalProcessor仅更新 “default”连接

r - 忽略 ggplot2 boxplot + faceting + "free"选项中的异常值

Solr 6 - 字段的 SUM 值以及 GROUP BY

javascript - Django 、jQuery。我无法在同一个 div 后多次加载()

python - Django 安装错误(没有名为 Django 的模块)

c++ - 所有权/删除区域设置中的构面(std::locale)