在使用带有django的haystack时,为具有外键和多对多字段的模型创建更好,更高效的搜索索引所需的建议。
样本模型:
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)
答案 0 :(得分:5)
您无需声明
metadata = models.ManyToManyField(MetaData)
而不是在doc
中的最佳实践中使用索引模板中的循环相关数据在处理方面存在一些问题,因为大多数搜索引擎使用文档比使用关系更好。解决此问题的一种方法是将相关子对象或对象去规范化为父对象的文档模板。包含外键的相关数据或简单的Django {% for %}
模板标签来迭代相关对象可以增加文档中的显着数据。要小心你包含的内容以及你如何构建它,因为这会对结果在搜索中的排名有影响
http://docs.haystacksearch.org/dev/best_practices.html?highlight=loop