2014-10-26 43 views
1

我现在正在学习ruby,并使用twitter作为平台帮助我在Sinatra中构建自己的第一个原型。我使用Twitter的宝石,并设法获得我的私人列表,并显示与列表中的用户有关的所有推文。搜索某个标签或单词的推特列表

但是,我现在想通过列表搜索一组特定的关键字,如果发现显示tweet。

有没有人知道是否有任何内部的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 

提前感谢

马特

回答

1

你是这个正确的:通过返回的每鸣叫迭代,得到相关的文本推文和搜索关键字,如果发现显示鸣叫。

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

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

你在找什么,我认为是Twitter“Streams”。当你要求Twitter流时,你可以从用户(或站点或全局)获得所有推文。这是更复杂的设置。这给你一切,并实时给你。

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

然后你搜索中的Rails的tweet。

  • 如果想要一个简单的搜索,你可能想看看使用Ruby的select方法和Regexp类。

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

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

0

考虑使用搜索方法如图example here

+0

据我可以告诉这不允许子集内搜索,并加在文档中阐明 '请注意,Twitter的搜索服务,并推而广之,搜索API并不意味着一个详尽推文来源。并非所有推文都将通过搜索界面编入索引或提供。# – 2014-10-26 22:07:56

+2

请勿仅使用链接指向非现场示例。 *当*链接断开你的回答将是无用的。相反,在您的答案中复制该链接的重要部分,并解释为什么它对OP有用。 – 2014-10-27 00:02:27