如何获得与acts_as_solr所有文档(how to get all docs with act

2019-09-29 11:36发布

我在做这样的事情:

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.任何想法,我缺少的是什么?

Answer 1:

从Solr的常见问题 :

我怎样才能得到所有匹配的文档回来? ... 我怎样才能返回行的数量限制?

这是在大多数情况下是不切实际的。 人们通常只是想做到这一点时,他们知道他们正在处理一个指标,其大小可以保证结果集将永远足够小,使得它们能够切实在可管理的数量传输 - 但如果是这样的话只需指定你考虑一下一个“管理的数量”作为行PARAM并获得两全其美的(所有的结果时,你的假设是正确的,如果事实证明这一结果大小理智盖你的假设是错误的)

作为指定用限制acts_as_solr ,你可以试试:limit => 80



Answer 2:

作为@mausch所述Solr的(并且通过扩展acts_as_solr )默认为10分的结果。 您可以使用:限制选项来增加这一点,但只需要一个Fixnum,而不是:所有的符号。 因此,指定:用一个Fixnum限制。



Answer 3:

我在我的粗略的笔记,你可以修改parser_methods.rb,围绕湖 75只返回AR的ID,而不是对象本身。 值得大型数据集一试。



Answer 4:

你必须指定:在您的查询偏移参数。

所以在看到未来的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)


文章来源: how to get all docs with acts_as_solr