Я использую Django Haystack для поиска.Django Haystack - Индексирование одного поля
В настоящее время, однако, он возвращает результаты, если поисковый запрос находится в любом из полей моей модели.
Например: поиск хуга дает результаты, где хуг находится в bio
поле.
Этого не должно быть, я хочу только вернуть результаты, где xyz находится в поле title
. Полное игнорирование всех других полей, кроме 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}%'
UPDATE
По предложению удалить 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
Но я с той же проблемой. (Пытался питон manage.py rebuild_index)
Это мои настройки Haystack, если это делает никакой разницы:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
},
}
Спасибо, я добавил обновление к моему вопросу, так как это, похоже, не разрешило мою проблему. – kieran