以下查询就像一个魅力:
@styles = Style.search { fulltext params[:q] }
我遇到的问题是分页。这是与分页相同的查询:
@styles = Style.search { fulltext params[:q]; paginate :page => params[:page], :per_page => params[:page_limit] }
我有 11Style
条记录。
如果我有:page => 1
并且:per_page => 10
当我搜索第 11 条记录时,我会返回一个空数组@styles.results
如果我设置:page=>2
并执行相同的搜索,我将获得第 11 个样式记录。
[11] pry(#<StylesController>)> params[:page]=2
=> 2
[12] pry(#<StylesController>)> x=Style.search {fulltext params[:q]; paginate :page => params[:page], :per_page => params[:page_limit] }
=> <Sunspot::Search:{:fq=>["type:Style"], :q=>"hel", :fl=>"* score", :qf=>"name_textp full_name_textp", :defType=>"dismax", :start=>10, :rows=>10}>
[13] pry(#<StylesController>)> x.results
=> [#<Style id: 15...>]
我认为重点是对搜索结果进行分页,而不是对整个实际记录进行分页
这是怎么回事,我该如何解决?
编辑
好的,让我尝试用另一种方式解释这一点。假设我有这六条记录:
1 => 'a'
2 => 'b'
3 => 'c'
4 => 'd'
5 => 'e'
6 => 'f'
假设我尝试搜索“f”
Letter.search { fulltext 'f'; paginate :page => 1, :per_page => 5 }
我的结果将是一个空数组[]
现在假设我尝试
Letter.search { fulltext 'f'; paginate :page => 1, :per_page => 6 }
现在我的结果是 [6 => 'f']