在将 haystack 与 django 一起使用时,为具有外键和多对多字段的模型创建更好、更有效的搜索索引所需的建议。
sample 型号:
class Resource(models.Model):
title = models.CharField(max_length=255)
description = models.TextField(blank=True, null=True)
content = models.ForeignKey(ResourceContent, unique=True)
metadata = models.ManyToManyField(MetaData)
最佳答案
你不需要申报
metadata = models.ManyToManyField(MetaData)
而是在索引模板内轻松使用循环,最佳实践在文档中说
相关数据
处理相关数据有些问题,因为大多数搜索引擎处理文档比处理关系更好。解决此问题的一种方法是将一个或多个相关子对象非规范化为父对象的文档模板。包含外键的相关数据或简单的 Django
{% for %}
迭代相关对象的模板标签可以增加文档中的显着数据。请注意您包含的内容及其结构,因为这会对结果在您的搜索中的排名产生影响http://docs.haystacksearch.org/dev/best_practices.html?highlight=loop
关于django 干草堆 : Better ways of creating search indexes for models having foreign key and many-to-many fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662122/