我正在做这样的事情:
Item.find_by_solr('name:ab*')
它说它返回297结果:
=> #<ActsAsSolr::SearchResults:0xb6516858 @total_pages=1, @solr_data={:docs=>[doc1, doc2, doc3...]}, :max_score=>1.6935261, :total_pages=>1, :total=>297}, @current_page=1>
Item.count_by_solr('name:ab*') also returns 297.
然而,当迭代它只显示10个项目时:
Item.find_by_solr('reference_name:ab*').each do |i| puts i end
我尝试添加{:per_page =&gt; 80}和:limit =&gt;:所有但它仍然会显示那些10.我知道我缺少什么吗?
答案 0 :(得分:1)
来自Solr FAQ:
如何获得所有匹配 文件回来了? ... 我该怎么回事? 行数不限?
这是 在大多数情况下不切实际。人 通常只想做到这一点 他们知道他们正在处理一个问题 索引,其大小保证结果 集合总是足够小 他们可以切实传播 在可管理的数量 - 但如果 就是这种情况只是指明了你 考虑一个“可管理的金额”作为你的 行param并充分利用两者 世界(所有的结果当你的 假设是对的,理智上限 如果事实证明结果大小 你的假设是错误的)
至于使用acts_as_solr
指定限制,请尝试:limit => 80
答案 1 :(得分:1)
正如@mausch所说,Solr(以及acts_as_solr
)默认为10个结果。您可以使用:limit选项来增加此值,但它只需要一个Fixnum,而不是:all符号。因此,请指定:使用Fixnum限制。
答案 2 :(得分:0)
我在粗略的笔记中说你可以修改parser_methods.rb,在l左右。 75只返回AR ID,而不是对象本身。值得一试大型数据集。
答案 3 :(得分:0)
您必须在查询中指定:offset参数。
所以要查看项目的下一个10个条目(第11到第20个),你必须这样做,
Item.find_by_solr('name:ab*', :offset => 10)
要查看接下来的10个条目,您必须再次将:offset参数增加10.因此,接下来的10个条目将如下所示。
Item.find_by_solr('name:ab*', :offset => 20)
获取了10个条目,因为:limit参数的默认值为10.如果我们想一次获取10个以上的条目,我们可以将其更改为其他条目。
# This query fetches 30 items, offset by 30. (assuming more than 30 entries are found by this query) Item.find_by_solr('name:ab*', :limit => 30, :offset => 30)