У меня есть прецедент, где мне нужно использовать логику ИЛИ с фильтрами атрибутов. Вот сценарий, Пользователь имеет много ролей и имеет атрибут global. Ниже приведен индексный блокИЛИ Логика с атрибутными фильтрами в Sphinx
define_index do
has roles(:id), :as => :role_ids
has global
end
И мне нужно, чтобы у пользователей были роли с id 5 или пользователями с глобальной истиной. Вот запрос я пытаюсь использовать
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. Я использую sphinx 0.9.9
Любая помощь?
Try "(глобальные | role_ids) = (5 | 1 | 0)" символ трубы вместо 'OR'. Я пробовал со старой версией не в новой .. – Jak