Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Twitter gem:如何避免使用max_id进行深度搜索?_Ruby On Rails_Twitter_Twitter Gem - Fatal编程技术网

Ruby on rails Twitter gem:如何避免使用max_id进行深度搜索?

Ruby on rails Twitter gem:如何避免使用max_id进行深度搜索?,ruby-on-rails,twitter,twitter-gem,Ruby On Rails,Twitter,Twitter Gem,我希望我的应用程序每隔几分钟在Twitter上搜索带有特定标签的推文,如下所示: results = client.search("#mypopulartag") 但是,我不想每次都进行完整搜索。在构建应用程序的过程中,我遇到了Twitter::TooManyRequests错误,因为它会返回大量结果,可能Twitter gem会根据一个client.search调用的需要向Twitter发出尽可能多的请求 我不需要每次都搜索超深。我是否可以将max_id参数传递给client.search方

我希望我的应用程序每隔几分钟在Twitter上搜索带有特定标签的推文,如下所示:

results = client.search("#mypopulartag")
但是,我不想每次都进行完整搜索。在构建应用程序的过程中,我遇到了Twitter::TooManyRequests错误,因为它会返回大量结果,可能Twitter gem会根据一个client.search调用的需要向Twitter发出尽可能多的请求


我不需要每次都搜索超深。我是否可以将max_id参数传递给client.search方法,这样我就不会浪费API调用?

是的,如果您跟踪最近处理的tweet的id,您可以使用gem 5.13版获得此后的所有tweet:

  client.search(
    "#mypopulartag",
    result_type: 'recent',
    since_id: since_id   # your last processed id
  ).take(15)

只要记住,如果有,比如说,60个结果,你将需要执行更多的client.search调用来获取所有tweet。对于这些呼叫,您还需要指定一个max_id,该id等于当前搜索中处理的最后一个tweet id。

啊,我明白了。但是,如果自上次搜索以来有许多~60个新结果,为什么我必须执行更多的client.search调用?我的理解是,使用.take15省略的client.search向Twitter搜索API发出尽可能多的请求-这不正确吗?我认为gem为一个client.search调用向Twitter发出许多请求的原因是,当我执行client.searchnike或任何其他非常流行的标记时,它会花费很长时间并返回一系列结果,如果我立即发出另一个请求,它会给我Twitter::Error::TooManyRequests.Just trusted client.searchtag,result\u type:recent,因为我上次保存的tweet的id:id\u,它返回了所有4500条结果,而自从我上次查询以来只发了大约20条tweet。我还试着传递一个max_id,但似乎也没有效果。你知道为什么这些参数似乎不起作用吗?谢谢。你使用的是什么版本的gem?这里有一个对我有用的示例:获取第三条tweet的id three_tweets_ago=client.searchhashtag,result_type:recent.take10[2]。id client.searchhashtag,result_type:recent,因为_id:three_tweets_ago。计数结果是3,正如预期的那样