手机优化好还是不优化好,seo推广公司排名,dante wordpress,品牌网站建设搭建在过去的几天里#xff0c;我一直在关注DHH兴起的“我的名字是……”的推文。 据我了解#xff0c;其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的。 您好#xff0c;我叫大卫。 我将无法在白板上写气泡排序。 我一直在互联网上查找代码。 我不做谜语。 — DHH#… 在过去的几天里我一直在关注DHH兴起的“我的名字是……”的推文。 据我了解其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的。 您好我叫大卫。 我将无法在白板上写气泡排序。 我一直在互联网上查找代码。 我不做谜语。 — DHHdhh 2017年2月21日 其他人引用了该推文并添加了自己的文章昨天Eduardo Hernacki建议遍历这条推文链似乎是为Neo4j量身定制的。 eduardohki是遍历所有这些东西的人吗 Neo4j — Eduardo Hernackieduardohki 2017年2月28日 Michael很快就出现在现场并创建了一个Cypher查询该查询调用Twitter API并根据生成的JSON响应创建Neo4j图形。 唯一棘手的一点是创建“承载者令牌”但是Jason Kotchoff有一个很有帮助的要点展示了如何从您的Twitter消费者密钥和消费者秘密中生成一个。 现在我们已经获得了承载令牌让我们创建一个参数来存储它。 在Neo4j浏览器中键入以下内容 :param bearer: your-bearer-token-goes-here 现在我们准备查询Twitter API。 我们将从搜索API开始找到包含文本“我的名字”“我在工作”的所有推文。 这将返回一个包含大量推文的JSON响应。 然后我们将为它返回的每个推文创建一个节点为发布该推文的用户创建一个节点为其引用的推文创建一个节点以及将它们粘合在一起的关系。 我们将使用APOC库中的apoc.load.jsonParams过程来帮助我们导入数据。 如果要继续学习可以使用安装了APOC的Neo4j沙箱实例 。 对于本地Neo4j安装在重新启动Neo4j之前请抓住APOC jar并将其放入您的plugins文件夹中。 这是完整的查询 WITH https://api.twitter.com/1.1/search/tweets.json?count100result_typerecent⟨enq as url, {bearer} as bearerCALL apoc.load.jsonParams(url %22my%20name%22%20is%22%20%22I%20work%22,{Authorization:Bearer bearer},null) yield valueUNWIND value.statuses as status
WITH status, status.user as u, status.entities as e
WHERE status.quoted_status_id is not null// create a node for the original tweet
MERGE (t:Tweet {id:status.id})
ON CREATE SET t.textstatus.text,t.created_atstatus.created_at,t.retweet_countstatus.retweet_count, t.favorite_countstatus.favorite_count// create a node for the author a POSTED relationship from the author to the tweet
MERGE (p:User {name:u.screen_name})
MERGE (p)-[:POSTED]-(t)// create a MENTIONED relationship from the tweet to any users mentioned in the tweet
FOREACH (m IN e.user_mentions | MERGE (mu:User {name:m.screen_name}) MERGE (t)-[:MENTIONED]-(mu))// create a node for the quoted tweet and create a QUOTED relationship from the original tweet to the quoted one
MERGE (q:Tweet {id:status.quoted_status_id})
MERGE (t)–[:QUOTED]-(q)// repeat the above steps for the quoted tweet
WITH t as t0, status.quoted_status as status WHERE status is not null
WITH t0, status, status.user as u, status.entities as eMERGE (t:Tweet {id:status.id})
ON CREATE SET t.textstatus.text,t.created_atstatus.created_at,t.retweet_countstatus.retweet_count, t.favorite_countstatus.favorite_countMERGE (t0)-[:QUOTED]-(t)MERGE (p:User {name:u.screen_name})
MERGE (p)-[:POSTED]-(t)FOREACH (m IN e.user_mentions | MERGE (mu:User {name:m.screen_name}) MERGE (t)-[:MENTIONED]-(mu))MERGE (q:Tweet {id:status.quoted_status_id})
MERGE (t)–[:QUOTED]-(q); 生成的图形如下所示 MATCH p()-[r:QUOTED]-() RETURN p LIMIT 25 一个更有趣的查询是找到从DHH到Eduardo的路径我们可以通过以下查询找到该路径 match path (dhh:Tweet {id: 834146806594433025})-[:QUOTED*]-(eduardo:Tweet{id: 836400531983724545})
UNWIND NODES(path) AS tweet
MATCH (tweet)-[:POSTED]-(user)
RETURN tweet, user 该查询 从DHH的推文开始 遍历所有QUOTED关系直到找到Eduardo的推文 收集所有这些推文然后找到作者 返回推文和作者 这是输出 我针对Twitter API进行了其他一些查询以混合一些我们尚未设置所有属性的节点-您可以在此要点上查看所有查询 。 在接下来的几天里我还将有一个运行https://10-0-1-157-32898.neo4jsandbox.com/browser/的沙箱。 您可以使用凭据readonly / twitter登录。 如果您有任何疑问/建议请在评论中告诉我 或者在Twitter上markhneedham 或给Neo4j DevRel团队发送电子邮件至devrelneo4j.com。 翻译自: https://www.javacodegeeks.com/2017/03/neo4j-graphing-name-work-twitter-meme.html