2012-06-11 65 views
2

此刻,我正在使用太陽黑子從多個表中進行選擇。我限制所選記錄的條件是創建日期必須在過去5天內。不過,我想進一步說明這一點,並限制選定的記錄數量,20?有沒有辦法用太陽黑子做到這一點?我沒有做任何奇特的分組或任何事情。只需選擇屬於各種型號的記錄並將其顯示在屏幕上即可。Rails 3太陽黑子限制選定記錄

我當前的代碼:

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

我試圖由readme在Github上規定,但所產生可能是因爲我在做一個全球性的太陽黑子搜索,而不是一個未定義的方法錯誤加入「限價」條款搜索特定的模型。

錯誤代碼:

@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> 
+0

發佈代碼生成錯誤和錯誤本身的代碼片段。 – pduey

+0

查看更新後的問題 – Noz

回答

4

「限制」 的方法是 「基團」。見the readme section on groups。太陽黑子提供分頁(和the kaminari gem順便說一句,像一個魅力)。自述文件中的See the section on solr pagination。具體來說,試試這個:

@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 
+0

現在,如果我說10,000條記錄,查詢將搜索所有10,000條記錄,然後將其簡化爲20條,或者只需選擇它需要的20條記錄? – Noz

+0

分頁是由solr完成的,而且非常高效。因此,在上面的太陽黑子查詢中,solr返回由創建日期排序的前20個文檔。如果你想要21-40,設置頁面:2.用Kaminari寶石,你可以設置頁面:params [:page]。 – pduey

+0

好吧,這聽起來不錯,因爲我運行的查詢發生在主頁上,這是我想要的任何性能命中的最後一個地方。謝謝您的意見。 – Noz