我想获得solr搜索的所有结果。
考虑这个例子:
@search = Post.search do
with(:blog_id, 1)
fulltext("pizza")
paginate :page => params[:page], :per_page => 50
end
@posts = @search.results
@rows_num = @search.total
返回的总行数为250.默认情况下,每页显示50行。
到目前为止,一切都很好。
我现在需要获取所有搜索结果(250个结果)以进行进一步处理。
@posts
仅包含页面上显示的50行。
@posts.all
似乎不起作用。
如何访问太阳黑子solr搜索的整个结果集?
感谢您的帮助。
答案 0 :(得分:0)
虽然我不知道Ruby或Sunspot,但在您的查询中有:per_page参数,其值为50。根据太阳黑子API文档,在solr HTTP REST API上,这应该与rows = x param等效。基本上这是一个参数,它告诉单个查询返回多少结果。如果它的值为1000000,它将始终返回查询中的所有结果,最多可返回一百万,无论找到多少。
使用更高限制进行第二次查询以获取所有文档。选择一个你可以处理的上限,因为一些查询可以匹配并返回整个索引,给出足够高的行值。