gpt4 book ai didi

python - 搜索多个字段

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:11 24 4
gpt4 key购买 nike

我想我没有正确理解 django-haystack:

我有一个包含多个字段的数据模型,我想搜索其中两个:

class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True, default=None)
twitter_account = models.CharField(max_length=50, blank=False)

我的搜索索引设置:

class UserProfileIndex(SearchIndex):
text = CharField(document=True, model_attr='user')
twitter_account = CharField(model_attr='twitter_account')

def get_queryset(self):
"""Used when the entire index for model is updated."""
return UserProfile.objects.all()

但是当我执行搜索时,只搜索了“用户名”字段; “twitter_account”被忽略。当我通过 dbshel​​l 选择 Searchresults 时,对象包含“user”和“twitter_account”的正确值,但结果页面显示“无结果”:

    {% if query %}
<h3>Results</h3>

{% for result in page.object_list %}
<p>
<a href="{{ result.object.get_absolute_url }}">{{ result.object.id }}</a>
</p>
{% empty %}
<p>No results</p>
{% endfor %}
{% endif %}

有什么想法吗?

最佳答案

我想那是因为 haystack 使用文档字段进行一般搜索,除非您为其他字段(如 twitter_account 字段)定义特定搜索。

from haystack documentation

Every SearchIndex requires there be one (and only one) field with document=True. This indicates to both Haystack and the search engine about which field is the primary field for searching within.

尝试如下指定索引

class UserProfileIndex(SearchIndex):
text = CharField(document=True, use_template=True)
user = CharField(model_attr='user')
twitter_account = CharField(model_attr='twitter_account')

并创建一个名为搜索/索引//userprofile_text.txt

其中将包含以下内容

{{ object.user.get_full_name }}
{{ object.twitter_account}}

现在,当您未指定索引过滤器时,haystack 将搜索此文件的内容(您可以在其中添加任何您想要的内容)。

关于python - 搜索多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732898/

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