Сфинкс определяет условия с помощью ИЛИ - PullRequest
0 голосов
/ 28 ноября 2011

Я застрял здесь с небольшой проблемой с сфинксом, использующим рубин на рельсах.

Проблема в том, что

Мне нужно сделать это в мышлении сфинкса

scope :for_current_user, lambda{
    {:conditions => ["documents.user_id = ? OR documents.state != 'draft'", User.current.id]}
  }

Мой самый подходящий подход был:

  sphinx_scope(:sphinx_for_current_user){
    { :conditions => {:user_id => "#{User.current.id }", :workflow_state => '!draft'}}
  }

Но эта сфинкс сфера действия выше - это

"documents.user_id = 20 AND workflow_state! = 'Draft'"

, но мне действительно нужно

" documents.user_id = 20 ИЛИ workflow_state! = 'Draft' "

ЛюбойПомощь приветствуется.

Спасибо.

1 Ответ

2 голосов
/ 29 ноября 2011

Правильный запрос для этого - без областей - должен быть построен вручную, и может выглядеть примерно так:

Document.search "(@user_id 20) | (@workflow_state !draft)", :match_mode => :extended

В настоящее время в Thinking Sphinx вы не можете предоставить запрос как часть области действия sphinx - только параметры. Так что, хотя запрос должен быть в порядке, области видимости не являются опцией.

...