我正在为产品列表编制索引,每个产品都有一个类别列表。类别大约是1000。
在搜索页面中,我想列出所有类别超过1的类别。
我正在收集方面:
results.facet_counts()
不幸的是,这只会返回前10个类别!
我似乎找不到让它返回的方法。
我正在使用最新版本的 Haystack 和 ElasticSearch 。
希望有人可以帮忙! :)
答案 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软件包的源代码