neo4j入門

一些非常好的資料:

基於java api的開發

http://www.infoq.com/cn/articles/graph-nosql-neo4j

java開發入門教程:

http://www.neo4j.org.cn/basic-tutorials/

cypher語言學習

http://neo4j.com/developer/cypher/

Neo4j是一個java開發的圖數據庫,它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。相對於關係數據庫來說,圖數據庫善於處理大量複雜、互連接、低結構化的數據,這些數據變化迅速,需要頻繁的查詢——在關係數據庫中,這些查詢會導致大量的表連接,因此會產生性能上的問題。Neo4j重點解決了擁有大量連接的傳統RDBMS在查詢時出現的性能衰退問題。Neo4j還提供了非常快的圖算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是無法實現的。它提供了廣泛使用的REST接口,能夠方便地集成到基於JAVA、PHP、.NET和JavaScript的環境裏。

Neo4j 使用cypher語言進行查詢

創建節點
CREATE (ee:員工 { 姓名: “張勇”, 來自: “中國” , 年齡 : 99 })

• 通過CREATE創建一個節點
• () 代表一個節點
• ee:員工 變量’ee’,標籤label是 ‘員工’
• {} 包含了屬性

自己動手寫個Demo試試:

CREATE (p1:Person {name:’胡興炯’, born:1991, interest:’mac,ios,旅遊’, goodat:’java,swift,objectiveC’})
CREATE (p2:Person {name:’張勇’, born:1990, interest:’android’, goodat:’java,android’})
CREATE (p3:Person {name:’成文龍’, born:1990, interest:’linux,hadoop’, goodat:’linux,java,android’})
CREATE (p4:Person {name:’王昕’, born:1978, interest:’wpf,noSQL,旅遊’, goodat:’java,c#’})
CREATE (p5:Person {name:’周開琪’, born:1977 , interest:’管理’, goodat:’管理,’})
CREATE (p6:Person {name:’徐錦亮’, born:1985, interest:’前端’, goodat:’前端,html5’})
CREATE (p8:Person {name:’徐輝霞’, born:1990, interest:’管理,旅遊’, goodat:’管理,採購’})
CREATE (p9:Person {name:’黃廷鵬’, born:1992, interest:’OA’, goodat:’java’})
CREATE (p10:Person {name:’史樂樂’, born:1991, interest:’OA,旅遊’, goodat:’管理’})

CREATE (p1)-[:認識]->(p2)
CREATE (p1)-[:認識]->(p3)
CREATE (p1)-[:認識]->(p4)
CREATE (p1)-[:認識]->(p5)
CREATE (p1)-[:認識]->(p9)

CREATE (p2)-[:認識]->(p1)
CREATE (p2)-[:認識]->(p3)
CREATE (p2)-[:認識]->(p4)
CREATE (p2)-[:認識]->(p5)
CREATE (p2)-[:認識]->(p9)

CREATE (p3)-[:認識]->(p1)
CREATE (p3)-[:認識]->(p2)
CREATE (p3)-[:認識]->(p4)
CREATE (p3)-[:認識]->(p5)
CREATE (p3)-[:認識]->(p9)

CREATE (p4)-[:認識]->(p1)
CREATE (p4)-[:認識]->(p2)
CREATE (p4)-[:認識]->(p3)
CREATE (p4)-[:認識]->(p5)
CREATE (p4)-[:認識]->(p9)

CREATE (p5)-[:認識]->(p1)
CREATE (p5)-[:認識]->(p2)
CREATE (p5)-[:認識]->(p3)
CREATE (p5)-[:認識]->(p4)
CREATE (p5)-[:認識]->(p6)
CREATE (p5)-[:認識]->(p8)
CREATE (p5)-[:管理]->(p1)
CREATE (p5)-[:管理]->(p2)
CREATE (p5)-[:管理]->(p3)
CREATE (p5)-[:管理]->(p4)
CREATE (p5)-[:管理]->(p6)

CREATE (p6)-[:認識]->(p5)
CREATE (p6)-[:認識]->(p4)
CREATE (p6)-[:夫妻]->(p8)

CREATE (p9)-[:認識]->(p1)
CREATE (p9)-[:認識]->(p2)
CREATE (p9)-[:認識]->(p3)
CREATE (p9)-[:認識]->(p10)
CREATE (p9)-[:單相思]->(p10)

CREATE (p10)-[:認識]->(p9)

View Code

運行完上面腳本的效果

查找所有擅長goodat“管理”的人
MATCH (n:Person ) WHERE n.goodat =~ ‘.管理.’ return n;

查找成文龍“認識“的人
MATCH (n:Person { name: ‘成文龍’ })-[:認識]-(neighbors) RETURN n,neighbors

查找所有“單相思”的人
MATCH (n:Person)-[:單相思]-(neighbors) RETURN n,neighbors

查找周開琪“管理”的人
MATCH (n:Person { name: ‘周開琪’ })-[:管理]-(neighbors) RETURN n,neighbors

查找徐輝霞“認識“的人 (2層關係網絡)
MATCH (n:Person { name: ‘徐輝霞’ })-[:認識*1..2]-(neighbors) RETURN n, collect(DISTINCT neighbors)
查找徐輝霞“認識“的人 (3層關係網絡)
MATCH (n:Person { name: ‘徐輝霞’ })-[:認識*1..3]-(neighbors) RETURN n, collect(DISTINCT neighbors)

(圖略)

徐錦亮找到史樂樂的所有最短路徑 (不超過4層)

MATCH p=allShortestPaths(
(a:Person { name: ‘徐錦亮’ })-[:認識*..4]-(b:Person { name: ‘史樂樂’})
)
RETURN p

刪除所有節點和關係

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章