gjb*_*gjb 3 search ruby-on-rails filter faceted-search ruby-on-rails-3
用户当前可以通过设置复选框将过滤器应用于数据库查询,例如
Colour
[] Red
[] Green
[] Blue
Shape
[] Round
[] Square
Size
[] Small
[] Medium
[] Large
Run Code Online (Sandbox Code Playgroud)
单击复选框会触发AJAX请求,该请求会将where
条件附加到查询中,例如
@mymodel = MyModel.scoped
@mymodel = @mymodel.where(:colour => params[:colour]) if params[:colour]
...
Run Code Online (Sandbox Code Playgroud)
我现在要做的是在每个复选框后添加一个计数,以指示如果选择了给定的复选框,将显示多少结果.例如
Colour
[] Red (148)
[] Green (121)
[] Blue (136)
...
Run Code Online (Sandbox Code Playgroud)
单击复选框后,应刷新所有复选框旁边的计数,并且不会显示与零结果相关的选项.这需要适用于所有过滤器类别,因此,例如,如果数据库中没有任何小和红色,当选择"红色"时,"小"选项应消失,并在取消选择时重新显示.
实现此类预测过滤的最佳方法是什么?
非常感谢.
更新
更具体地说,我的问题是:在Rails中实现分面导航的最佳方法是什么?
(感谢@Pasta为此确定术语)
有相当多的开源搜索引擎可以为您提供分面搜索.我们使用Thinking Sphinx并对它非常满意.看起来他们已初步支持Rails 3,但它可能值得一试.该小的语法相当简单:
例:
# This will return any search results for 'pancakes'
Article.search 'pancakes'
# This will return any facets for 'pancakes'
Article.facets 'pancakes'
Run Code Online (Sandbox Code Playgroud)
您可能还想看看Solr和Ferret - 我认为这两者都支持分面搜索.