我還沒有使用這個庫,但據我可以從源代碼中找出來,Model#search和Tire :: Search :: Search應該採用相同的選項。如果你看一下產品型號#搜索源代碼,它這樣做(減少到相關部分):
def search(*args, &block)
query, options = args
s = Tire::Search::Search.new(options.delete(:index), options)
這樣的選擇是通過對輪胎::搜索::搜索的初始化只是遞給。
但是,這只是創建對象。輪胎::搜索::搜索似乎在內部使用術語size
和from
而不是per_page
和page
。所以上面的代碼將繼續這樣的:
page = options.delete(:page)
per_page = options.delete(:per_page) || Tire::Results::Pagination::default_per_page
s.size(per_page.to_i) if per_page
s.from(page.to_i <= 1 ? 0 : (per_page.to_i * (page.to_i-1))) if page && per_page
如此看來from
作品從不同page
(而size
和per_page
是相似的)。 from
是絕對的位置。 (我不知道Tire :: Results :: Pagination :: default_per_page在這裏增加了什麼,或許可以設置一些默認值。)
爲了得出結論,我的教育猜測應該是這樣的爲你工作:
search = Tire::Search::Search.new("items", size: 20, from: 0)
其中用於其他頁面位置,你會計算(per_page *(頁面 - 1))