如何在许多条件下在RoR中组织搜索? (申请中的过滤器)

时间:2013-02-11 06:05:20

标签: ruby-on-rails search ruby-on-rails-3.2 sphinx thinking-sphinx

我在Ruby on Rails应用程序中使用Thinking Sphinx进行搜索。 在模型中我使用sphinx范围。

# Sphinx for Items

  define_index do
    indexes name

    has status_id, year
  end



 sphinx_scope(:by_year)  { |min, max|
   {:with => { :year => (min.to_i)..(max.to_i) }}
 }

  sphinx_scope(:by_status_id) { |id|
    {:with => {:status_id => id}}
  }

当我只想搜索年份时,我会使用

@items = Items.by_year(year_start, year_finish)

我所有物品都有条件。

当我只想搜索状态时,我会使用

@items = Items.by_status_id(status_id)

但是当用户选择状态和年份时,我想动态添加条件。

@items = Items.by_year(year_start, year_finish)
@items = @items.by_status_id(status_id) if status_id

这不起作用。 我当前的colution - instance_eval

str = "Items.by_year(year_start, year_finish)"
str << ".by_status_id(status_id)"  if status_id
instance_eval str

这很有用。

安全和适当多少?我有很多要搜索的字段,大约有二十个。

如果您不使用Sphinx,那么没有他的数据选择速度有多快?我只搜索数值数据。

0 个答案:

没有答案