gpt4 book ai didi

Django 干草堆 : responsibilities of the template and model indexes

转载 作者:行者123 更新时间:2023-12-04 11:52:21 25 4
gpt4 key购买 nike

我已经浏览了文档,我什至创建了一些搜索后端,但我仍然对这些东西在 haystack 中的作用感到非常困惑。搜索后端是否搜索您放在继承的类中的字段index.SearchIndex、index.Indexable,或者后端是否在搜索模板中的文本?有人可以向我解释一下吗?

在 django haystack 中,您将创建一个定义应查询哪些字段的类(这就是我的理解),如下所示:

class ProductIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='title', boost=1.75)
description = indexes.CharField(model_attr='description')
short_description = indexes.CharField(model_attr='short_description')

def get_model(self):
return Product

def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(active=True,
published_at__lte=datetime.now())

您还将创建一个模板 txt 来执行某些操作 - 我不确定是什么。我知道搜索后端将在搜索算法期间检查此模板。
{{ object.name }}
{{ object.description }}
{{ object.short_description }}
{% for related in object.related %}
{{ related.name }}
{{ related.description }}
{% endfor %}

{% for category in object.categories.all %}
{% if category.active %}
{{ category.name }}
{% endif %}
{% endfor %}

正如您所看到的,模板有一些我的索引类没有的字段,但是,这些将由搜索后端进行搜索。那么为什么索引中有字段呢?索引类的卷是什么,索引模板是什么?有人可以向我解释一下。

最佳答案

ProductIndex类是这里的主要内容。 Haystack 将使用此配置来索引您的 Product根据您选择索引的字段以及以何种方式建立模型。您可以阅读更多相关信息 here .

此字段将使用您创建的模板 text = indexes.CharField(document=True, use_template=True) .在这个模板中,我们包含模型或相关模型的所有重要数据,为什么?因为如果您不想只在一个字段中查找,这将用于对所有数据执行搜索查询。

# filtering on single field
qs = SearchQuerySet().models(Product).filter(name=query)

# filtering on multiple fields
qs = SearchQuerySet().models(Product).filter(name=query).filter(description=query)

# filtering on all data where ever there is a match
qs = SearchQuerySet().models(Product).filter(text=query)

关于 Django 干草堆 : responsibilities of the template and model indexes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504360/

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