gpt4 book ai didi

Django Haystack/Solr : Faceting on a model but show results only from a ForeignKey field

转载 作者:行者123 更新时间:2023-12-04 06:30:41 25 4
gpt4 key购买 nike

我在 Django 中有两个模型如下(伪代码)

class Medicine(db.Model):
field_1 = db.CharField()
field_2 = db.CharField()

class Application(db.Model):
field_1 = db.CharField()
field_2 = db.CharField()
medicine = db.ForeignKey(Medicine)

有一个 1:M。一种药物可以有多种应用。

我需要对 Application 的领域进行分面但只显示相关 Medicine对象。类似于 SQL 中的 DISTINCT。

用 haystack 实现这一目标的最直接的方法是什么?

我做 SearchIndexMedicineApplication ?如果我做 SearchIndexApplication , 如何检测/过滤重复项 Medicine对象?

PS:我知道 Solr 的开发版本中有 Field Collapsing 功能,但我想避免这样做,因为它是巨大的数据库和性能关键。

最佳答案

我在 haystack 邮件列表上的 Daniel Lindsay(Haystack/pySolr 作者)的帮助下解决了这个问题。

from haystack import indexes

class Medicine(indexes.SearchIndex):
field_1 = indexes.MultiValuedField(faceted=True)
# Other field definitions


def prepare_field_1(self, object):
values = list()
for app in object.applications.all():
values.append(app.field_on_which_to_facet)
return values

# define "prepare_fieldname" methods for other fields in similar fashion.

索引需要一些时间,因为要索引的数据非常庞大,但工作起来很有魅力。

关于Django Haystack/Solr : Faceting on a model but show results only from a ForeignKey field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451205/

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