从搜索实体获取结果以进行Twitter搜索

时间:2012-11-16 14:57:15

标签: c# asp.net-mvc linq-to-twitter

我正在使用linq-to-twitter,我想传入一个标签来搜索和收集数据(文本,用户名,用户图片。我可以返回一个搜索实体,但我想进一步找到文本,在文档中,它说搜索实体有一个结果字段,它是一个SearchEntities列表,但它没有出现在我面前。对于以下两种情况我都得到了红线:

案例1:

        using (var twitterCtx = new TwitterContext())
                    {
                      var searchResults =
                         (from search in twitterCtx.Search
                         where search.Type == SearchType.Search &&
                             search.Query == tag &&
                             search.IncludeEntities == true
                         select search)
                        .SingleOrDefault();

                        searchResults.Results.ForEach(entry =>
                        {
                            ....

和案例2 :(我只是为了一个简单的例子而嵌入它)

var latestTweets= (from tweet in twitterCtx.Search
               where tweet.Count == 200 &&
                     tweet.Hashtag.Contains(tag)
               select tweet).Take(20);


              foreach (var tweet in latestTweets)
              {
                  foreach(var tweet2 in tweet.Result)

。结果只是没有出现...... 编辑:API doc

1 个答案:

答案 0 :(得分:2)

这里发生了一些事情。首先,LINQ to Twitter现在实现了Twitter API v1.1,这意味着必须对包括搜索在内的所有查询进行身份验证。我在这里有关于如何在Securing Your Applications使用OAQ和LINQ到Twitter的文档。可下载的源代码和Sample页面也有示例。

偶尔会发生的下一件事是Twitter可能没有为您的查询返回数据。他们的搜索引擎针对某些类型的查询进行了优化,并且不保证搜索引擎的质量响应。您可以访问他们的Search页面进行检查,并输入与您尝试使用LINQ to Twitter的查询相同的数据。他们也有Advanced Search的链接。

如果您认为LINQ to Twitter可能出现问题,请使用Fiddler捕获HTTP流量并向我显示请求和响应。注意:请务必清理凭据,以免它们公开显示。

另一件事是使用Contains运算符的第二个查询将不起作用。 LINQ to Twitter仅在过滤器中使用相等运算符,这些运算符成为发送到Twitter的参数。如果您想要更复杂的查询,首先从Twitter获取数据,然后执行LINQ to Objects查询。理由是Twitter API无法识别特殊操作符,并且引入这种假设不会让您知道线路上发生了什么,这会影响应用程序的性能。

@JoeMayo