Django Haystack - 面向限量10?

时间:2012-09-05 11:58:42

标签: python django elasticsearch django-haystack

我正在为产品列表编制索引,每个产品都有一个类别列表。类别大约是1000。

在搜索页面中,我想列出所有类别超过1的类别。


我正在收集方面:

results.facet_counts()

不幸的是,这只会返回前10个类别!

我似乎找不到让它返回的方法。


我正在使用最新版本的 Haystack ElasticSearch


希望有人可以帮忙! :)

3 个答案:

答案 0 :(得分:2)

您可以在json查询中指定facet的大小,这是您将获得的条目数:

{
    "query" : {
        "match_all" : {  }
    },
    "facets" : {
        "tag" : {
            "terms" : {
                "field" : "tag",
                "size" : 10
            }
        }
    }
}

如果要备份所有条目,则需要配置较高的值。 不确定如何将此参数添加到您正在使用的库中。希望答案无论如何都会有用。

答案 1 :(得分:0)

答案 2 :(得分:0)

您可以通过以下方式覆盖自定义get_queryset()的{​​{1}}方法:

FacetedSearchView

您还可以定义全局设置def get_queryset(self): options = {"size": 0} #unlimited results, use with caution qs = super().get_queryset() for field in self.facet_fields: qs = qs.facet(field, **options) return qs 并使用它。

ELASTIC_FACET_SIZE

通过这种方式,您不必弄乱haystack软件包的源代码