Как добавить условия в поисковый запрос мышления-сфинкса? - PullRequest
1 голос
/ 01 апреля 2012

У меня есть модель товара с ценой в качестве атрибута.

Этот запрос работает нормально, но нужно изменить несколько вещей.

  @products = Product.search(params[:query], :with => {:price => (params[:price_start].to_s.to_i..params[:price_end].to_s.to_i).to_a}, :page => params[:page], :per_page => 16)

У меня есть несколько предопределенных ценовых диапазонов, текущие ценовые диапазоны:

  • 1-100 долларов
  • 100-300 долларов
  • 300-600 долларов
  • 600 + Доллары

Вопрос

:with => {:price => (params[:price_start].to_s.to_i..params[:price_end].to_s.to_i).to_a}

работает нормально в случае (1-100), (100-300), (300-600). Но как отфильтровать для 600+ диапазонов. Как передать запрос как:

 :with => {:price > (params[:price_start].to_s.to_i} ie the case when price > 600

Я проверяю, что пользователь не изменяет параметры, образующие длинный огромный массив.

Как я могу изменить этот запрос, чтобы передать> и <вместо массива цены. </strong>

Ответы [ 2 ]

4 голосов
/ 11 апреля 2012

Мышление Сфинкс использует только диапазоны, не больше / меньше, чем символы.

В моем приложении я делаю что-то вроде этого:

value = 23
MyClass.search("itemname", :with => {:price => value..0xffffffff})
2 голосов
/ 01 апреля 2012

Может быть :without => {:price => 1..600}?

...