2011-02-12 80 views
0

我不断收到搜索查询太多字符的Twitter 403错误。Twitter API搜索 - 如何检查查询字符长度?

search = Twitter::Search.new.contains("#{self.home_team.long_name} #{self.away_team.long_name} win OR lose") 
    search.language("en").no_retweets.since_date(since) 

如何计算查询有多少个字符,所以我跳过试图对其执行搜索?例如,这一个是156个字符:

GET https://search.twitter.com/search.json?q=Middle%20Tennessee%20State%20Blue%20Raiders%20Florida%20International%20Golden%20Panthers%20win%20OR%20lose%20-rt%20-from%3Aespn&&lang=en&since=2011-02-09: 403: Sorry, your query is too complex. Please reduce complexity and try again. 

回答

0

我不认为问题是您的查询长度,这是查询的复杂性。尝试降低使用更严格的查询或更简单的查询的结果的复杂性或数量。这通常发生在基于地理位置的查询中,例如near,半径太大并且导致计算复杂或大型查询。

如果你还是想算的查询长度,你也许可以通过向上计数的参数和密钥,这样得到的长度的良好估计:

search = Twitter::Search.new.contains(....).language('en') 
search.query.inject(0){ |sum, obj| sum += obj[0].size+obj[1].size+1 } 

这应该给你的长度键+值+您的查询符号。