Как искать во всех моделях django с помощью Haystack и Whoosh?

Я использую django и haystack с whoosh, и у меня есть несколько вопросов о них:

1) Когда я пытаюсь найти что-то, я должен выбрать все модели, которые проиндексированы в whoosh. Как настроить систему на поиск значений везде (на всех моделях)?

2) У меня есть поле ввода поиска, но оно не работает с URL-адресами стога сена. Итак, мой шаблон (я использую бутстрап):

<form  method="get" action="/search/" class="navbar-search pull-left">
   <input type="text" class="search-query" placeholder="Search">
</form>

И у меня есть URL-адрес поиска, как в учебнике:

(r'^search/', include('haystack.urls')),

Как сказать этой форме, чтобы немедленно начать поиск и отправить данные в стог сена?


person kurd    schedule 05.02.2012    source источник


Ответы (2)


Вам нужно создать классы RealTimeSearchIndex в вашем файле search_index.py в корне проекта и зарегистрировать эти индексы с помощью haystack.

Затем вам нужно переиндексировать данные с помощью команды haystack manage.py reindex.

Затем вам нужно предоставить шаблон для страницы поиска, которую сгенерирует стог сена.

Продолжайте читать документы, там все есть.

person Thomas    schedule 05.02.2012

Для части 2,

поскольку стог сена использует ?q= для получения запросов, вы должны указать name="q" в поле ввода,

<form  method="get" action="/search/" class="navbar-search pull-left">
    <input name="q" type="text" class="search-query" placeholder="Search">
</form>

Для части 1,

вы можете поместить search_indexes.py в каждую папку модели. Не уверен, что есть более эффективный метод. Вы можете использовать ModelSearchView, если хотите предоставить пользователям выбор для поиска моделей.

person DavidL    schedule 06.05.2012