Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Javascript Twitter流式API多流与自定义过滤器_Javascript_Node.js_Twitter - Fatal编程技术网

Javascript Twitter流式API多流与自定义过滤器

Javascript Twitter流式API多流与自定义过滤器,javascript,node.js,twitter,Javascript,Node.js,Twitter,我正在构建一个node.js应用程序,该应用程序将打开与Twitter流媒体API(v1.1)的连接 我想过滤多个关键字(hashtags和words)作为单独的查询。我最初的想法是拥有多个公共流 然而,我明白,每个应用程序和每个IP地址只能有一个到Twitter流媒体api的开放连接,Twitter鼓励我们拿出创造性的解决方案来获得我们想要的 所以我的问题是: 如果我在流媒体中不使用过滤器,比如使用(我认为是1%)和使用自定义javascript来过滤输出,那么如果我使用API过滤方法(即tr

我正在构建一个node.js应用程序,该应用程序将打开与Twitter流媒体API(v1.1)的连接

我想过滤多个关键字(hashtags和words)作为单独的查询。我最初的想法是拥有多个公共流

然而,我明白,每个应用程序和每个IP地址只能有一个到Twitter流媒体api的开放连接,Twitter鼓励我们拿出创造性的解决方案来获得我们想要的

所以我的问题是:

如果我在流媒体中不使用过滤器,比如使用(我认为是1%)和使用自定义javascript来过滤输出,那么如果我使用API过滤方法(即track='twitter'),我会得到同样的tweet吗

编辑:我创建了一个图表来解释这一点:

如你所见,我想知道两个输出是否相同。我怀疑它们不会,因为虽然两个输出实际上是相同的过滤器,但一个源是1%的样本,另一个源可能是100%的样本,但只提供1%的推文

那么,是否有人能澄清两种输出是否相同


谢谢。

根据推特流媒体api规则,如果您跟踪的关键词不超过全球流量的1%,您将收到所有数据(一些推特可能由于网络问题等而丢失,但并不重要)。这被称为花园软管(消防软管是一种特殊的过滤器,提供所有数据,但它是通过第三方(例如)作为付费服务提供的)

所以,如果一条推特是通过公共流过滤的,那么它也将是您自定义过滤器的一部分,除非您的关键字集太宽

通过使用自定义过滤器,您可以跟踪多个搜索关键字,如果您因为关键字集太宽而丢失了一些数据,twitter会发送一个跟踪限制通知,指示您丢失了多少数据

我给你的建议是使用一个定制的过滤器,分析你从流中得到什么,以及你从twitter上得到的相同关键字的结果。当你开始从twitter上收到跟踪限制通知时,是时候把你的关键字集分割成块,并通过从不同的机器上运行它们来开始通过不同的流媒体

过滤流的详细信息如下(摘自官方网站)

返回与一个或多个筛选器谓词匹配的公共状态。可以指定多个参数,以允许大多数客户端使用到流式API的单个连接。GET和POST请求都受支持,但参数过多的GET请求可能会因URL长度过长而被拒绝。使用POST请求避免长URL

默认访问级别允许多达400个跟踪关键字、5000个跟踪用户ID和25个0.1-360度位置框。如果您需要提升对流式API的访问权限,您应该在此处探索我们的Twitter数据合作伙伴提供商


我想用我的调查结果来回答我的问题

我在同一时间段内对这两种方法进行了并排测试,得出的结论是,虽然自定义过滤器方法支持多个过滤器,但它不能提供足够的tweet来创建足够有趣的可视化效果

我认为使用并发过滤器获得更有趣内容的唯一方法是查看其他方法,但我想知道这是否是不可能的。也许是第三方

我附上了可视化跟踪“巴拉克奥巴马”的屏幕截图。左边是自定义过滤器,右边是状态/过滤器


状态/过滤器
api对所有tweet运行,而不是通过
状态/示例返回的tweet,您可以通过查看其tweet id来判断:示例tweet都来自特定的时间窗口。因此,从毫秒分辨率创建时间,您可以明确地看出,
filter
返回
sample
之外的tweet


有关从tweet id和示例tweet的时间窗口获取创建时间的更多详细信息,请参阅以下帖子:

目前我正在使用位置筛选“整个英国”。那么,这将花费我高达1%的时间吗?您是否从您的流中收到任何跟踪限制通知消息,如果是,则肯定意味着您丢失了一些数据。两个输出将不相同。左侧的推文包含的数据将少于右侧的推文,因为它包含的推文与全局数据的%1相匹配,全局数据可能包含也可能不包含您过滤的数据。然而,如果您使用通过流api进行过滤,它将为您提供包含该过滤器的所有数据,或者提供除超过全局数据总量%1的tweet之外的所有数据。因此,如果你想为一个特定的过滤器获得尽可能多的tweet,请使用流api过滤。我一直在考虑这个应用程序,我不介意我们获得更少的tweet,因为多个过滤器更重要。(用于WebGL可视化)。所以我要做的是测试这两种可能性,并在这里给出我的结果。然后你需要处理你的tweet,并根据每个用户的过滤器将它们保存到每个用户的存储桶中。例如,userA请求关于“A”的推文,userB请求关于“B”的推文。然后,您的流将检索所有包含“A”或“B”的tweet。当您收到tweet时,您应该根据用户的过滤器将每个tweet映射到用户的数据存储。因此,通过这种方式,您将只向用户A的集合发送关于“A”的推文,并向用户B的集合发送关于“B”的推文。