Мышление Sphinx — как сказать ему использовать функцию включения ActiveRecord, чтобы избежать дополнительных запросов SQL?

Sphinx и ThinkingSphinx отлично работают для меня, однако, когда поиск возвращает массив результатов (моделей), я затем замечаю в своих журналах, что существует большое количество вспомогательных запросов SQL для извлечения любых связанных моделей, эти ассоциации определены в мои модельные классы.

Если бы я просто использовал ActiveRecord, я мог бы использовать функцию «включить», чтобы получить эти связанные записи как часть исходного поискового запроса, например:

Booking.find_all_by_date(Date.today, :include => [:event, :organizer, :sessions])

Но я не уверен, как реализовать эту оптимизацию производительности в ThinkingSphinx, кто-нибудь решил это?


person Jason    schedule 20.09.2011    source источник


Ответы (1)


Вы делаете это точно так же — используйте :include, он будет передан базовому запросу ActiveRecord, когда Thinking Sphinx преобразует результаты Sphinx в объекты ActiveRecord.

Изменить: начиная с TS v3 , параметр :include теперь содержится в параметре :sql:

Booking.search(:sql => {:include => [:event, :organiser, :sessions]})
person pat    schedule 20.09.2011
comment
Еще раз спасибо, Пэт - не могу поверить, что пропустил это! - person Jason; 21.09.2011