gpt4 book ai didi

python - Django Haystack - 索引单个字段

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:01 24 4
gpt4 key购买 nike

我正在使用 Django Haystack用于搜索。

想在搜索结果时定位我模型的title字段。

但是目前,如果搜索词出现在我的模型中的任何字段中,它就会返回结果。

例如:搜索 xyz 会得到 xyzbio 字段中的结果。

这不应该发生,我只想返回 xyztitle 字段中的结果。完全忽略 Artist.title 以外的所有其他字段进行搜索。

artists/models.py :

class Artist(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(max_length=100)
strapline = models.CharField(max_length=255)
image = models.ImageField(upload_to=get_file_path, storage=s3, max_length=500)
bio = models.TextField()

artists/search_indexes.py

from haystack import indexes
from app.artists.models import Artist

class ArtistIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True, model_attr='title')

def get_model(self):
return Artist

我猜想它就像一个 SQL 查询:

SELECT * FROM artists WHERE title LIKE '%{search_term}%'

更新

按照删除 use_template=True 的建议,我的 search_indexes.py 现在看起来像:

from haystack import indexes
from app.artists.models import Artist


class ArtistIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, model_attr='title')
title = indexes.CharField(model_attr='title')

def get_model(self):
return Artist

但是我遇到了同样的问题。 (试过python manage.py rebuild_index)

如果有任何不同的话,这是我的 Haystack 设置:

HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
},
}

最佳答案

model_attruse_template 不能一起工作。在这种情况下,当您查询单个模型属性时,无需使用模板。搜索索引中的模板纯粹是为了对数据进行分组。

因此,您最终得到:

class ArtistIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, model_attr='title')

def get_model(self):
return Artist

关于python - Django Haystack - 索引单个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228612/

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