Django + Haystack как сделать этот поиск

Я новичок в Haystack и в мире поиска, поэтому не знал, как задать этот вопрос.

Я хочу добиться следующего.

Имея поисковый запрос типа: один два

Я хотел бы вернуть любой контент, например:

  • Вот этот
  • один
  • два
  • два один
  • что-то одно здесь

Возможно ли это с Haystack + solr/xapian? Также можно иметь отношение к результату? В случае, когда оба слова попали, это придало бы мне больше актуальности.

В настоящее время я использую SearchQuerySet, но не могу этого добиться.

Ваше здоровье


person Esteban Feldman    schedule 01.07.2010    source источник


Ответы (1)


Итак, вы в основном ищете запрос типа OR, верно? По умолчанию haystack использует операцию AND для объединения запросов.

Вы можете сделать это двумя способами:

  • Измените HAYSTACK_DEFAULT_OPERATOR в файле settings.py на OR. Очевидно, что это будет изменение всего сайта.
  • Измените форму SearchQuerySet, чтобы использовать filter_or, что заставит поиск в стиле OR. Итак, передайте новый в свою форму/представление: SearchQuerySet.filter_or(**kwargs)

Кроме того, вы всегда можете объединить объекты Django Q вместе, но, учитывая, что у вас есть эти варианты, это, вероятно, ваш лучший выбор.

Для актуальности вы должны прочитать страницу Best Practices, которая идет использовать шаблоны поиска и использовать их для отображения релевантного контента.

Надеюсь, это поможет!

person Bartek    schedule 01.07.2010