在Twitter列表中搜索某些标签或单词

时间:2014-10-26 20:57:31

标签: ruby twitter sinatra

我正在学习ruby,并使用twitter作为平台帮助我在Sinatra中构建我的第一个原型。我正在使用Twitter gem并设法获取我的私人列表并显示与该列表中的用户相关的所有推文。

但是我现在想在列表中搜索一组特定的关键字,如果找到则显示推文。

有没有人知道Twitter宝石中是否还有这样做?或者我将如何以有效的方式在rails中执行此操作。

我能弄清楚的唯一方法是迭代返回的每条推文,获取与该推文相关的文本并搜索关键字,如果找到则显示该推文。对我来说这是非常低效的,这不会消耗不必要的API请求吗?

如果这对任何人有任何帮助,我到目前为止都是这样。

require 'sinatra'
require 'rubygems'
require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key       =  'xxxx'
  config.consumer_secret    =  'xxx'
  config.access_token        = 'xx'
  config.access_token_secret = 'xx'
end


get '/' do
  @tweet = client.list_timeline(1231123123123,{:include_rts => 0})
  erb :index
end

非常感谢提前

马特

2 个答案:

答案 0 :(得分:1)

你这是正确的:迭代返回的每条推文,获取与该推文相关的文本并搜索关键字,如果找到则显示该推文。

你写道:“这对我来说是愚蠢无效的”。你是对的。这是低效的,因为您必须检索所有推文,而不仅仅是包含您想要的关键字的推文。

Twitter的宝石没有做你想要的,因为Twitter搜索有点不可预测。这是因为Twitter搜索正在针对相关性而非彻底性进行优化。

我认为,您正在寻找的是Twitter“Streams”。当您要求Twitter流时,您可以从用户(或网站或全球)获取所有推文。设置起来比较复杂。这为您提供了一切,并实时提供给您。

https://dev.twitter.com/streaming/overview

然后你在Rails中搜索推文。

  • 如果您想进行简单搜索,可能需要查看使用Ruby的select方法和Regexp类。

  • 如果您想要强大的搜索功能,您可能需要查看各种搜索宝石和搜索引擎,例如sunspot_solr和Lucene。

  • 如果您正在构建具有更高级扩展和搜索需求的实际业务应用程序,您可能需要阅读有关Twitter Firehose合作伙伴和文本引擎(如discovertext)的信息。这些合作伙伴和引擎提供实时搜索API,缓存和更多功能。

答案 1 :(得分:0)

考虑使用example here

中显示的搜索方法