Ruby on rails Sphinx中带有属性过滤器的OR逻辑

Ruby on rails Sphinx中带有属性过滤器的OR逻辑,ruby-on-rails,sphinx,thinking-sphinx,Ruby On Rails,Sphinx,Thinking Sphinx,我有一个用例,需要将OR逻辑与属性过滤器一起使用。这是一个场景,用户有许多角色,并且有一个名为global的属性。下面是索引块 define_index do has roles(:id), :as => :role_ids has global end 我需要让具有id为5的角色的用户或具有全局true的用户。这是我试图使用的查询 User.search( :sphinx_select => "*, IF(global OR role_ids = 5, 1, 0

我有一个用例,需要将OR逻辑与属性过滤器一起使用。这是一个场景,用户有许多角色,并且有一个名为global的属性。下面是索引块

define_index do
  has roles(:id), :as => :role_ids
  has global
end
我需要让具有id为5的角色的用户或具有全局true的用户。这是我试图使用的查询

User.search(
     :sphinx_select => "*, IF(global OR role_ids = 5, 1, 0) AS program_global",
     :with => {'program_global' => true},
     :match_mode => :extended
)
这会导致语法错误-在“角色ID=5,1,0”附近出现意外的TOK_ATTR_MVA。这里的问题似乎是角色ID是MVA。我使用的是斯芬克斯0.9.9


有什么帮助吗?

这是帕特给出的答案

尝试使用“(全局|角色| ID)=(5 | 1 | 0)”管道符号代替“或”。我试过用旧版本而不是新版本。。
"*, IF(global OR IN(role_ids, 5), 1, 0) AS program_global"