我在做这样的事情:
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 => 80}和:上限=>:所有的,但它仍然显示了这些10.任何想法,我缺少的是什么?
从Solr的常见问题 :
我怎样才能得到所有匹配的文档回来? ... 我怎样才能返回行的数量限制?
这是在大多数情况下是不切实际的。 人们通常只是想做到这一点时,他们知道他们正在处理一个指标,其大小可以保证结果集将永远足够小,使得它们能够切实在可管理的数量传输 - 但如果是这样的话只需指定你考虑一下一个“管理的数量”作为行PARAM并获得两全其美的(所有的结果时,你的假设是正确的,如果事实证明这一结果大小理智盖你的假设是错误的)
作为指定用限制acts_as_solr
,你可以试试:limit => 80
作为@mausch所述Solr的(并且通过扩展acts_as_solr
)默认为10分的结果。 您可以使用:限制选项来增加这一点,但只需要一个Fixnum,而不是:所有的符号。 因此,指定:用一个Fixnum限制。
我在我的粗略的笔记,你可以修改parser_methods.rb,围绕湖 75只返回AR的ID,而不是对象本身。 值得大型数据集一试。
你必须指定:在您的查询偏移参数。
所以在看到未来的10项(11日至20日)项的,你必须做到这一点,
Item.find_by_solr('name:ab*', :offset => 10)
而要看到未来10个条目,则必须再次增加:由10偏移参数,以便在未来10个条目是这样的。
Item.find_by_solr('name:ab*', :offset => 20)
10项是牵强,因为的默认值:极限参数是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)