Джанго / Сфинкс: Как сделать запрос на нескольких моделях?
Я хочу иметь возможность запрашивать разные модели одновременно и получать совокупный результат полнотекстового поиска. т.е. книги и авторы в виде единого списка, отсортированного, например, по релевантности.
Как я понимаю, в документации упоминается, что это возможно, но есть огромное ограничение:
... Слой django-sphinx также поддерживает некоторые базовые запросы по нескольким индексы... Ваши индексы должны содержать точно такие же поля. Эти поля также должен включать выбор content_type, который должен быть content_type идентификатор, связанный с этой таблицей (модель) ...
Означает ли это, что модели должны иметь одинаковые поля или будет достаточно, если только поля в индексе являются общими? Это все еще будет огромным ограничением. И почему модели должны содержать атрибут content_type, когда его можно получить из самого класса?
Что если одно и то же имя индекса дается для индексов разных моделей? Можно ли выполнить поиск по этому индексу и получить результаты из разных моделей?
Также в документации говорится, что для поиска по нескольким моделям необходимо настроить sphinx следующим образом:
model_classes = (ModelOne, ModelTwoWhichResemblesModelOne)
output = generate_config_for_models(model_classes)
У кого-нибудь есть опыт по этому поводу?
1 ответ
Модели должны быть общими в индексе (вы можете добавить поддельные столбцы). Они должны содержать content_type, поэтому, когда вы получаете результаты, вы знаете модель, которой принадлежит результат.