2

現時点では、Sunspot を使用して複数のテーブルから選択を行っています。作成日が過去5日以内であることを条件に、選択するレコードを限定しています。ただし、これをさらに進めて、選択するレコードの数を 20? に制限したいと思います。太陽黒点でこれを行う方法はありますか?私は派手なグループ化などはしていません。さまざまなモデルに属するレコードを選択して画面に表示するだけです。

私の現在のコード:

@updates = Sunspot.search(Upload,Help, User...) do
      with(:created_at).greater_than(5.days.ago)      
      order_by(:created_at, :desc)
end  

Github のreadmeで指定されているように 'limit' 句を追加しようとしましたが、おそらく特定のモデルでの検索ではなく、グローバルな Sunspot 検索を行っているため、未定義のメソッド エラーが発生しました。

エラーコード:

@updates = Sunspot.search(Upload,Help, User...) do
          with(:created_at).greater_than(5.days.ago)      
          order_by(:created_at, :desc)
          limit(20)
end 

エラーメッセージ:

undefined method `limit' for #<Sunspot::DSL::Search:0x0000000790b8c8>
4

1 に答える 1

4

「制限」メソッドは「グループ」用です。groups の readme セクションを参照してください。Sunspot はページネーションを提供します (そして、kaminari gemの魅力のように機能します)。readme のsolr ページネーションに関するセクションを参照してください。具体的には、これを試してください:

@updates = Sunspot.search(Upload,Help, User...) do
  with(:created_at).greater_than(5.days.ago)      
  order_by(:created_at, :desc)
  paginate page: 1, per_page: 20
end 
于 2012-06-12T20:30:35.883 に答える