1

我正在做这样的事情:

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} 和 :limit=>:all 但它仍然显示这 10 个。知道我缺少什么吗?

4

4 回答 4

1

Solr 常见问题解答

如何取回所有匹配的文件?...我怎样才能返回无限数量的行?

这在大多数情况下是不切实际的。人们通常只想在他们知道他们正在处理一个索引时才这样做一个“可管理的数量”作为您的行参数并获得两全其美(假设正确时的所有结果,如果结果证明您的假设错误,则对结果大小设置合理上限)

至于用 指定限制,请acts_as_solr尝试类似:limit => 80

于 2009-08-22T16:34:43.823 回答
1

正如@mausch 所说,Solr(以及扩展名acts_as_solr)默认为 10 个结果。您可以使用 :limit 选项来增加它,但它只需要一个 Fixnum,而不是 :all 符号。因此,请使用 Fixnum 指定 :limit。

于 2009-08-26T20:53:54.020 回答
0

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

于 2009-08-24T01:19:17.357 回答
0

您必须在查询中指定 :offset 参数。

因此,要查看 Item 的下 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 个以上的条目,我们可以将其更改为其他值。

# 此查询获取 30 个项目,偏移 30。(假设此查询找到超过 30 个条目)
Item.find_by_solr('name:ab*', :limit => 30, :offset => 30)
于 2010-12-08T18:27:43.220 回答