Mat*_*iby 2 ruby group-by ruby-on-rails thinking-sphinx ruby-on-rails-3
好吧,我有4个模型,我正在搜索这样的搜索
#category model
define_index do
indexes :name, :description, :tag
indexes sub_categories.name, :as => :subcategory_name
end
#pattern model
define_index do
indexes :name, :tag_name, :reference
indexes colorways.filename, :as => :color_name
end
Run Code Online (Sandbox Code Playgroud)
等等....我还有一个搜索控制器,通过这个命令调用它们
@results = ThinkingSphinx.search params[:search], :page => params[:page], :per_page => 25
Run Code Online (Sandbox Code Playgroud)
我需要根据模型对结果进行分组,例如我希望所有的图形结果首先是类别,然后是子类别,所以在我的视图中我可以将所有图形放在一起并将类别放在一起.....任何想法关于通过对象对这些进行分组或排序的最佳方法
有两种方法......首先,Thinking Sphinx将类名称的CRC版本存储为属性,因此您可以要求Sphinx对其进行排序:
ThinkingSphinx.search params[:search],
:page => params[:page],
:per_page => 25,
:order => 'class_crc ASC, @relevance DESC'
Run Code Online (Sandbox Code Playgroud)
但是,这并不强制执行特定的顺序(您提到了首先想要图形结果) - 因此您可能需要考虑不同的方法 - 使用确定顺序的整数为每个索引定义添加手动属性:
has '1', :as => :model_order, :type => :integer
Run Code Online (Sandbox Code Playgroud)
根据搜索结果中的所需位置,为每个索引定义更改1到2,3等.然后搜索看起来像这样:
ThinkingSphinx.search params[:search],
:page => params[:page],
:per_page => 25,
:order => 'model_order ASC, @relevance DESC'
Run Code Online (Sandbox Code Playgroud)
希望这两个选项中的一个适合你所追求的.
归档时间: |
|
查看次数: |
907 次 |
最近记录: |