2013-02-08 72 views
1

我正在尝试将Tire整合到我的网站中,并且我在分页时遇到了问题。我试过在Tire的上下文之外对结果进行分页,并且will_paginate正在处理该数组。但是,当我在Tire的上下文中尝试使用will_paginate时,我遇到了一个大问题。轮胎+ Will_Paginate未采取Tire.options

Will_Paginate将显示正确的页面数,考虑:per​​_page,但是当我点击该页面时,结果不会被加载,而是它们与第一页上的相同。该页码在will_paginate导航中突出显示。

@ results.inspect收益率这样的:

#<Tire::Search::Search:0x007f88ab9153d0 @indices=["deja-set-development"], @types=[],  @options={:load=>true, :page=>1, :per_page=>2}, @path="/deja-set-development/_search", @query=#<Tire::Search::Query:0x007f88ab915088 @value={:query_string=>{:query=>"oh"}}>, @facets={"type"=>{:terms=>{:field=>:_type, :size=>10, :all_terms=>false}}}> 

这里就是我所说的will_paginate:

= will_paginate @search_results.results, params 

这里就是我遍历这些结果

@search_results.results.each 

没有人有有什么想法吗?

编辑---

我不知道是怎么回事,但我没有这样做,它是工作。

@search_results = @search_results.paginate(:page => params[:page], :per_page => 5) 
+0

你是如何做实际的搜索? – 2013-02-08 20:38:41

+0

@search_results = Tire.search(INDEX_NAME,load:true,page:(params [:page] || 1),per_page:2)do – ezis 2013-02-08 21:24:26

+0

请编辑您的_question_并在其中添加此信息。另外,请使用代码格式以获得更好的可读性。 – karmi 2013-02-09 08:03:02

回答

0

为了澄清,我在这里附上了我的github与@karmi的通信。

https://github.com/karmi/tire/issues/627#issuecomment-13449368

我使用Tire.search,而不是通过模型搜索。正如@karmi指出的那样:目前:Tire不支持per_page和:page。

这是我如何解决了这个:

@search_results = Tire.search [:index1, :index2, :index3], :load => true, :from => from, :size => size do 
     query do 
      string q, :default_operator => 'AND', :fields => [:name1, :name2] 
     end 
    end 

我最后不得不分拆我自己的小分页系统来增加“大小”和“从”。以下是该主题的弹性搜索链接。

http://www.elasticsearch.org/guide/reference/api/search/from-size.html

你能仍然可以访问

= @search_results.results.total_entries/next_page/previous_page 

与分页帮助。

再次感谢@karmi。

1

请参阅Tire中的integration test,并确保您正确传递所有选项。

+0

只是为了澄清,multi_search页面/ per_page选项未正确加载。它是否正确? – ezis 2013-02-12 17:21:32