如何限制ruby google-search中的结果数量?

时间:2014-02-05 19:03:42

标签: ruby search google-search

我使用visionmedia google search库来处理Ruby,但我找不到在搜索中选择结果数量的方法。我看一下将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

2 个答案:

答案 0 :(得分: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),您会发现执行时间要长得多,这与枚举是一致的。

答案 1 :(得分:0)

一种方法是在google-search/lib/google-search/search/base.rb

的第183行查看此方法
def self.size_for sym
      { :small => 4,
        :large => 8 }[sym]
    end

您可以扩展此哈希以及您想要的任何自定义搜索大小。

或者,深入挖掘并查看是否可以将它们全部消除,并允许新的搜索选项接受search.size的整数。