Django Haystack/Solr:模型上的分面,但仅显示来自外键字段的结果
我在 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 实现此目的最直接的方法是什么?
我是否为 Medicine
或 Application
创建 SearchIndex
?如果我为 Application
创建 SearchIndex
,如何检测/过滤重复的 Medicine
对象?
PS:我知道 Solr 的开发版本中有字段折叠功能,但我想避免这样做,因为它是巨大的数据库并且性能至关重要。
I have two models in Django like follows(in pseudo code)
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)
There is a 1:M. One medicine can have many applications.
I need to facet on the fields of Application
but only show related Medicine
objects. Something like DISTINCT in SQL.
What would be the most straight forward way to accomplish this with haystack?
Do I make SearchIndex
for Medicine
or Application
? If I make SearchIndex
for Application
, how do I detect/filter duplicate Medicine
objects?
PS: I know there's Field Collapsing feature in dev releases of Solr, but I want to avoid doing that, becuase it is huge database and performance critical.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在 haystack 邮件列表上的 Daniel Lindsay(Haystack/pySolr 作者)的帮助下解决了这个问题。
索引需要一些时间,因为要索引的数据非常庞大,但工作起来很顺利。
I solved this with the help of Daniel Lindsay(Haystack/pySolr author) on haystack mailing list.
Indexing takes some time as the data to be indexed is huge is huge, but worked like a charm.