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

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

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

... The django-sphinx layer also supports some basic querying over multiple 
indexes ... Your indexes must contain exactly the same fields. These fields 
must also include a content_type selection which should be the content_type 
id associated with that table (model) ...

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

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

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

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

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

1 Ответ

1 голос
/ 14 ноября 2010

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

...