2013-07-07 2 views
1

Я создаю приложение Django, где пользователи могут искать блоги других пользователей на основе ключевых слов, отображаемых в заголовке или содержании своих сообщений. Я понимаю, что Haystack - хороший вариант для таких поисковых запросов.Поиск в сенах с иностранным ключом

Тем не менее, я хотел бы также, чтобы пользователи могли фильтровать результаты в блогах, которые они «следуют», которые хранятся как много-много отношений между пользователями и блогами. Поскольку концы Haystack не поддерживают отношения с внешним ключом, каковы мои варианты?

Я новичок в этом, поэтому я подумал о следующих вариантах, которые, вероятно, не самые эффективные.

  1. Искать все блоги по заданным ключевым словам, чтобы получить набор результатов публикации. Затем запросите базу данных для всех последующих блогов и отфильтруйте их по результатам ключевых слов.
    Я не уверен, как хорошо это сработает, если в поиске по ключевым словам будет много, тысячи результатов.

  2. Объявление ID пользователей, которые следят за блогом на все содержание блога. Затем найдите сообщения, соответствующие ключевым словам и зарегистрированным идентификаторам пользователя.
    Это вызовет много дублирования данных, и это похоже на грязный взлом.

Есть ли стандартный способ объединить запросы внешнего ключа с текстовыми поисковыми запросами?

спасибо.

ответ

0

Вам нужно haystack MultiValueField. Посмотрите пример here.

+0

Почему не просто: 'SearchQuerySet(). Filter (blog_id__in = [1,5,9]). Filter (text = 'hello')' где 'blog_id' является полем в вашем классе' PostIndex' – Medorator

Смежные вопросы