【问题标题】:How do I limit the number of results in ruby google-search?如何限制 ruby google-search 中的结果数量?
【发布时间】:2014-03-02 09:54:34
【问题描述】:
我正在为 Ruby 使用 visionmedia google search 库,但我找不到在搜索中选择结果数量的方法。我看过将search.size 选项从:large 更改为:small,但它似乎没有任何区别。我如何将结果限制为五个 URL。
require "google-search"
uris=[]
i=0
Google::Search::Web.new do |search|
i = i + 1
next if i == 6
search.query = "where is peru?"
search.size = :small
puts i
end.each_item { |item| uris << item.uri }
print uris
【问题讨论】:
标签:
ruby
search
google-search
【解决方案1】:
这个:
search = Google::Search::Web.new do |search|
search.query = "where is peru?"
search.size = :small
end
创建一个 lazy 可枚举对象,该对象仅在您枚举搜索结果时检索搜索结果。因此:
search.first(5)
获取前五次搜索;还有这个:
uris = search.first(5).map(&:uri)
获取前五个 uri。
把first(5)改成first(20),你会发现执行起来要花更长的时间,这与枚举懒惰是一致的。
【解决方案2】:
一种方法是在google-search/lib/google-search/search/base.rb 的第 183 行查看此方法
def self.size_for sym
{ :small => 4,
:large => 8 }[sym]
end
您可以扩展此哈希以及您想要的任何自定义搜索大小。
或者,深入挖掘,看看您是否可以一起消除它并允许新的搜索选项接受 search.size 的整数。