У меня есть вариант использования, когда мне нужно использовать логику ИЛИ с фильтрами атрибутов. Вот сценарий: у пользователя много ролей и атрибут, называемый глобальным. Ниже находится индексный блок
define_index do
has roles(:id), :as => :role_ids
has global
end
И мне нужно, чтобы пользователи имели роли с идентификатором 5 или пользователи с глобальным значением true. Вот запрос, который я пытаюсь использовать
User.search(
:sphinx_select => "*, IF(global OR role_ids = 5, 1, 0) AS program_global",
:with => {'program_global' => true},
:match_mode => :extended
)
Это приводит к синтаксической ошибке — неожиданному TOK_ATTR_MVA рядом с 'role_ids = 5, 1, 0)' . Проблема здесь, похоже, в том, что role_ids — это MVA. Я использую сфинкс 0.9.9
Любая помощь?