通过google-api-client gem使用Google自定义搜索引擎

时间:2014-02-18 15:07:19

标签: ruby-on-rails ruby search google-api

我尝试使用Google自定义搜索引擎API完成相当基本的搜索。 我面临的问题是,我能够获得的唯一结果是前10个:

module WalterSobchak
  class GoogleCustomSearch
    def initialize
      @client = Google::APIClient.new(
        key: configatron.google.api_key, authorization: nil)
      @search = @client.discovered_api('customsearch')
    end

    def query(q, num)
      @client.execute(api_method: @search.cse.list,
        parameters: {q: q, startIndex: num,
                     key: configatron.google.api_key,
                     cx: configatron.google.custom_search_engine})
    end
  end
end

这段代码非常简单但效果很好:首先我使用api_key初始化我的GCS客户端,然后我可以用我喜欢的任何参数调用它,例如:

client.query('poker', 10)

使用字符串'扑克'来搜索我的自定义引擎并从结果集的第10个元素开始。我的问题是它不起作用,我总是得到与没有startIndex选项时相同的结果。问题可能是我不知道该参数是否以这种方式命名,或者它是否是我可以使用的正确参数:我已经尝试过startIndex,start,start_index,num(这个有效,但是最大值为10,我需要至少30个结果),有时参数被拒绝,有时它不会造成任何影响。

之前有没有人做过这样的事情并且可以帮助我?

1 个答案:

答案 0 :(得分:2)

从API资源管理器:https://developers.google.com/apis-explorer/#p/customsearch/v1/search.cse.list

看起来你要查找的参数是'start':要返回的第一个结果的索引(整数)。另一个参数(num)是返回的结果数。

您可以在资源管理器上手动尝试,看看为什么它没有返回您需要的内容。