ИЛИ логика с фильтрами атрибутов в сфинксе - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть случай, когда мне нужно использовать логику ИЛИ с фильтрами атрибутов. Вот сценарий, Пользователь имеет много ролей и имеет атрибут глобальный. Ниже указатель блока

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

Любая помощь?

1 Ответ

2 голосов
/ 01 марта 2012

Это был ответ Пата

https://groups.google.com/forum/?fromgroups#!topic/thinking-sphinx/kxNIGP10hkQ

"*, IF(global OR IN(role_ids, 5), 1, 0) AS program_global"
...