Джанго / Сфинкс: Как сделать запрос на нескольких моделях?

Я хочу иметь возможность запрашивать разные модели одновременно и получать совокупный результат полнотекстового поиска. т.е. книги и авторы в виде единого списка, отсортированного, например, по релевантности.

Как я понимаю, в документации упоминается, что это возможно, но есть огромное ограничение:

... Слой django-sphinx также поддерживает некоторые базовые запросы по нескольким 
индексы... Ваши индексы должны содержать точно такие же поля. Эти поля 
также должен включать выбор content_type, который должен быть content_type 
идентификатор, связанный с этой таблицей (модель) ...

Означает ли это, что модели должны иметь одинаковые поля или будет достаточно, если только поля в индексе являются общими? Это все еще будет огромным ограничением. И почему модели должны содержать атрибут content_type, когда его можно получить из самого класса?

Что если одно и то же имя индекса дается для индексов разных моделей? Можно ли выполнить поиск по этому индексу и получить результаты из разных моделей?

Также в документации говорится, что для поиска по нескольким моделям необходимо настроить sphinx следующим образом:

model_classes = (ModelOne, ModelTwoWhichResemblesModelOne)
output = generate_config_for_models(model_classes)

У кого-нибудь есть опыт по этому поводу?

1 ответ

Решение

Модели должны быть общими в индексе (вы можете добавить поддельные столбцы). Они должны содержать content_type, поэтому, когда вы получаете результаты, вы знаете модель, которой принадлежит результат.

Другие вопросы по тегам