neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图
neo4j 顯示名字
在過去的幾天里,我一直在關注DHH發起的有關“我的名字是……”的推文。 據我了解,其想法是表明在白板上編寫采訪謎語/艱巨任務是荒謬的。
您好,我叫大衛。 我不會在白板上寫氣泡排序。 我一直在互聯網上查找代碼。 我不做謎語。
— DHH(@dhh) 2017年2月21日
其他人引用了該推文并添加了自己的文章,昨天Eduardo Hernacki建議遍歷這條推文鏈似乎是為Neo4j量身定制的。
@eduardohki是遍歷所有這些東西的人嗎? #Neo4j
— Eduardo Hernacki(@eduardohki) 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?count=100&result_type=recent?=en&q=' 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.text=status.text,t.created_at=status.created_at,t.retweet_count=status.retweet_count, t.favorite_count=status.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.text=status.text,t.created_at=status.created_at,t.retweet_count=status.retweet_count, t.favorite_count=status.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團隊發送電子郵件至devrel@neo4j.com。
翻譯自: https://www.javacodegeeks.com/2017/03/neo4j-graphing-name-work-twitter-meme.html
neo4j 顯示名字
總結
以上是生活随笔為你收集整理的neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vaadin_Vaadin提示:以声明方
- 下一篇: 辰组词 辰如何组词