2014-02-05 50 views
1

我爲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 

回答

1

此:

search = Google::Search::Web.new do |search| 
    search.query = "where is peru?" 
    search.size = :small 
end 

創建枚舉對象,只有你枚舉他們檢索的搜索結果。因此:

search.first(5) 

獲得前五個搜索;和這個:

uris = search.first(5).map(&:uri) 

獲得前五個uri。

更改first(5)first(20)並且您會發現執行需要更長的時間,這與枚舉懶惰一致。

+0

完美工作。謝謝 :) –

0

一種方法是看這個方法就行183 google-search/lib/google-search/search/base.rb

def self.size_for sym 
     { :small => 4, 
     :large => 8 }[sym] 
    end 

你可以擴展這個哈希和任何自定義搜索大小你想要的。

或者,深入挖掘並查看是否可以將它們全部清除,並允許新的搜索選項接受search.size的整數。