Подключение приложения в поисковый индекс
После установки и настройки хайстека в проекте можно начать подключать приложения в поисковый индекс.
В каталоге приложения надо создать файл search_indexes.py
следующего содержания:
from haystack import site
from haystack.indexes import *
from . import models
class MyIndex(SearchIndex):
text = CharField(document=True, use_template=True)
title = CharField(model_attr='title')
reg = DateTimeField(model_attr='created')
site.register(models.My, MyIndex)
Как видно из примера, весь текст аккумулируется в поле text
, формат которого вы будете определять с помощью шаблона. Также зарегистрированы дополнительные поля, по которым можно будет фильтровать поисковую выборку. Обратите внимание, что имена полей в модели можно явно указывать, если они отличаются от заданных здесь.
Для создания шаблона надо создать следующую структуру каталогов:
APP_NAME/templates/search/indexes/APP_NAME
В каталоге создайте файл my_text.txt
. Имя файла состоит из названия модели и названия поля, для которого предназначен данный шаблон.
Шаблон содержит следующий текст:
{{ object.content }}
{{ object.title }}
{{ object.author }}
Т.е. переменная object
представляет собой объект модели. Вы просто указываете те поля, которые должны присутствовать в поисковом индексе.
Индексирование статического контента
Для индексирования статического контента, например, нашего перевода документации по Django, мы используем немного допиленное приложение haystack-statick-pages. Наши изменения позволяют производить индексацию локального статического контента, раньше индексировалось только то, что можно получить по HTTP(S).