Ruby on Rails - 通过Twitter宝石搜索结果迭代的问题

时间:2016-03-24 19:29:09

标签: ruby-on-rails twitter twitter-gem

我一直在使用Twitter Streaming API一段时间没有问题,但最近转而使用REST而且有点困惑。

我正在尝试使用#vietnam迭代推文的结果。在reading the documentation之后,似乎我应该使用max_id。

max_id = 70978401017678643100000000000000 #very big number to start out with
i = 1
2.times do
  puts '----------SEARCHING WITH MAX_ID: ' + max_id.to_s
  $twitter.search('#vietnam', result_type: "recent", lang: 'en', geocode: "14.05832400,108.27719900,100000mi", count: 100, max_id: max_id).each do |tweet|
    puts "#{i} - tweet.id: " + tweet.id.to_s
    i += 1
    max_id = tweet.id if tweet.id < max_id
  end
end

以下是终端的结果:

----------SEARCHING WITH MAX_ID: 70978401017678643100000000000000
1 - tweet.id: 713034427027361794
2 - tweet.id: 713030624164982785
3 - tweet.id: 713027195015413760
4 - tweet.id: 713022173246582784
5 - tweet.id: 713021690989641728
6 - tweet.id: 713013561396764672
7 - tweet.id: 713010847166177280
8 - tweet.id: 712997640930197505
...
341 - tweet.id: 709784010176786432
----------SEARCHING WITH MAX_ID: 709784010176786432
342 - tweet.id: 709784010176786432

搜索查询中的地理编码距离越南中心有100,000英里半径,以确保我的结果不受位置限制。问题是在第二次迭代期间,结果只返回1个推文,即最后一个结果的max_id。

据我所知,通过推特的高级搜索功能验证,有更多的推文来自英语#vietnam: https://twitter.com/search-advanced?lang=en

我的迭代技术出了什么问题?

2 个答案:

答案 0 :(得分:1)

Twitter的REST API仅返回过去7天的结果,上周可能只有341条带有#vietnam的推文。高级搜索的结果可以追溯到更远的地方。

您的方法看似合理,尝试使用简单或流行的术语进行限制较少的搜索,该术语在过去一周内已被使用了数千次,看看您是否获得了更多结果。

答案 1 :(得分:0)

您是否有任何理由分别进行两次搜索?

您在第一次迭代中找到最低(最旧)的推文ID,并搜索比第二次迭代中更早(不存在)的结果。也许我误解了?