2012-04-01 3 views
1

Я товар модель есть цена как атрибут.Как добавить условия в поисковый запрос мышления-sphinx?

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

@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 

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

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

ответ

4

Мышление Sphinx использует диапазоны, не превышающие/меньше символов.

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

value = 23 
MyClass.search("itemname", :with => {:price => value..0xffffffff})