Django Haystack
django-haystack предоставляет модульную архитектуру поиска для Django с поддержкой различных движков.
Установка
Настройка
Создание индексов
1# search_indexes.py
2from haystack import indexes
3from .models import Book
4
5class BookIndex(indexes.SearchIndex, indexes.Indexable):
6 text = indexes.CharField(document=True, use_template=True)
7 title = indexes.CharField(model_attr='title')
8 author = indexes.CharField(model_attr='author__name')
9 published_date = indexes.DateTimeField(model_attr='published_date')
10
11 def get_model(self):
12 return Book
13
14 def index_queryset(self, using=None):
15 return self.get_model().objects.all()
Шаблон для поиска
Использование поиска
1from haystack.query import SearchQuerySet
2
3# Простой поиск
4results = SearchQuerySet().filter(content='python')
5
6# Поиск по полям
7results = SearchQuerySet().filter(title='Django')
8
9# Комбинированный поиск
10results = SearchQuerySet().filter(
11 content='python',
12 author='John Doe'
13).order_by('-published_date')
FAQ
Q: Как обновлять индекс автоматически?
A: Используй RealtimeSignalProcessor в настройках.
Q: Можно ли использовать без Elasticsearch?
A: Да, поддерживаются Whoosh, Solr и другие движки.