gpt4 book ai didi

django - django-haystack:预测构面

转载 作者:行者123 更新时间:2023-12-03 02:10:02 26 4
gpt4 key购买 nike

我试图查看django-haystack是否适合我的刻面需求。目前,我想在构面附近显示数字。可以说我们在他们的文档中显示了一个模型,但是有一个额外的方面供用户使用(例如,作者在其中写注释的样式...例如,样式是经典还是现代)。因此索引将如下所示。

class NoteIndex(SearchIndex, indexes.Indexable):
text = CharField(document=True, use_template=True)
author = CharField(model_attr='user', faceted=True)
style = CharField(model_attr='style', faceted=True)
pub_date = DateTimeField(model_attr='pub_date')

现在,我创建了一个搜索查询集,并缩小了范围,例如约翰。现在,我想显示一下如果我与John一起选择另一位作者(例如+10篇文章),将会展示多少产品。关于从样式中添加额外构面的相同问题...我该怎么做。搜索BE是elasticsearch。

最佳答案

SearchQuerySet的facet_counts方法可满足您的需求:

results = SearchQuerySet().filter(text='some product').facet('author')
counts = results.facet_counts()
author_results = counts['fields']['author']
author_counts = {author: num_products for author, num_products in author_results}

然后,您可以总结John的产品数量和其他作者的产品数量。如果您将搜索范围扩大到两者,那么将为您提供产品数量:
num_john_products = author_counts.get('John', 0)
num_bob_products = author_counts.get('Bob', 0)
total = num_john_products + num_bob_products

或者,您甚至可以找到约翰以外的产品最多的作者,并在搜索中同时包括该作者的情况下,显示结果数:
author_counts.pop('John')
most_popular_author = max([(count, author) for author, count in author_counts])
count, author = most_popular_author
total_john_and_most_popular = num_john_products + count

关于django - django-haystack:预测构面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com