導(dǎo)讀:
demo內(nèi)容來源網(wǎng)課貪心科技AI學(xué)社的網(wǎng)課《人工智能Python編程特訓(xùn)營》
本篇博客的主要內(nèi)容是neo4j的import導(dǎo)入方式及一些簡(jiǎn)單的Cypher語句。
由于以前接觸過neo4j所以這篇文章也就寫的不深脚线,對(duì)neo4j有比較大的興趣可以參考一下我整理的另一篇文章搁胆。http://www.reibang.com/p/6610129bbfd1
這次課程內(nèi)容沒有什么好介紹的弥搞,只是講了 neo4j最最最基本的用法邮绿。
作業(yè)
利用Neo4j構(gòu)建圖片所示內(nèi)容,熟悉Cypher查詢語言
準(zhǔn)備工作及說明
我沒有用create來創(chuàng)建結(jié)點(diǎn)和聯(lián)系攀例,而是直接寫好數(shù)據(jù)的csv格式文件船逮,然后再利用neo4j的csv直接導(dǎo)入neo4j數(shù)據(jù)庫中。
這是我已經(jīng)寫好的csv文件的格式粤铭,里面包括了3種結(jié)點(diǎn)和5種聯(lián)系挖胃。
鏈接:https://pan.baidu.com/s/1xoxj7ccopOklnDsTw_YGww
提取碼:dhap
復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦
假設(shè)已經(jīng)下好了CSV格式的數(shù)據(jù)梆惯,之后我們就要進(jìn)行導(dǎo)入酱鸭,但是導(dǎo)入之前有幾點(diǎn)需要說明:(很重要)
- CSV文件的第一行是屬性名,CSV文件是通過逗號(hào)隔開的垛吗。
- 結(jié)點(diǎn)CSV文件中必須有:
ID
這個(gè)屬性字段凹髓,且這個(gè)ID是全局唯一。:LABEL
字段不是必選項(xiàng)怯屉,可以在導(dǎo)入的時(shí)候說明蔚舀。 - 聯(lián)系CSV文件中必須有
:START_ID
和:END_ID
字段,對(duì)應(yīng)前面的結(jié)點(diǎn)CSV的ID字段锨络。 - 由于是中文赌躺,因此csv文件需要保存為utf-8的格式,否則會(huì)出現(xiàn)亂碼羡儿。
- 導(dǎo)入的時(shí)候要保證neo4j路徑下data/dataset下沒有g(shù)raph.db這個(gè)文件礼患,因?yàn)檫@種導(dǎo)入方法只能第一次導(dǎo)入,不能增量導(dǎo)入
- 導(dǎo)入的時(shí)候必須關(guān)閉neo4j,在命令行里面輸入
neo4j stop
關(guān)掉數(shù)據(jù)庫缅叠,然后把graph.db刪掉咏瑟,然后導(dǎo)入文件,再neo4j start
打開數(shù)據(jù)庫就可以了痪署。
備注:其實(shí)這種導(dǎo)入方法在這個(gè)demo中不是很好码泞,因?yàn)橐还簿椭挥?2個(gè)結(jié)點(diǎn),53個(gè)聯(lián)系狼犯,我們可以一句一句的創(chuàng)建出來余寥。但是在聯(lián)系中,我們需要根據(jù)圖去手動(dòng)尋找之前所對(duì)應(yīng)名字的ID悯森,因此比較麻煩宋舷。但是如果實(shí)現(xiàn)已經(jīng)準(zhǔn)備好了csv文件,我們只要一條語句就可以運(yùn)行了瓢姻。
這個(gè)麻煩有兩種解決方法:
- 一種是直接將name字段改為ID祝蝠,這樣直接看圖輸入就可以了。
- 另一種就是利用程序循環(huán)幻碱,但是在這里面數(shù)據(jù)量太小不值得專門寫一個(gè)程序绎狭。在實(shí)際的工作中,大規(guī)模的數(shù)據(jù)創(chuàng)建褥傍,這種方式也會(huì)比一個(gè)一個(gè)create/merge方便得多浅辙,因?yàn)镮D可以通過編程來創(chuàng)建ID级解。
導(dǎo)入工作
接著進(jìn)行導(dǎo)入,我們首先需要將這些8個(gè)CSV文件放入neo4j的bin目錄下(不需要把demo2文件夾也放進(jìn)去,只需要直接8個(gè)CSV文件拖進(jìn)去就可以了厚满,如果把文件夾拖進(jìn)去矢空,那么在導(dǎo)入的時(shí)候一定要記得指定路徑)椭更。
我們?cè)?strong>neo4j的bin目錄下運(yùn)行命令行(一定要在bin目錄下蚪燕,而不是在neo4j文件夾下,除非bin目錄也配置了環(huán)境變量)
neo4j-admin import --mode=csv --nodes node_direction.csv --nodes node_post.csv --nodes node_knowledge.csv --relationships relationship_dir_know.csv --relationships relationship_know_know.csv --relationships relationship_post_dir.csv --relationships relationship_post_know.csv --relationships relationship_know_dir.csv
稍微解釋一下代碼:
--mode=csv
表示導(dǎo)入的格式是CSV锦募,其實(shí)默認(rèn)也是CSV格式
--node:label xxx.csv
這里xxx.csv
表示導(dǎo)入的結(jié)點(diǎn)的文件摆屯,這里必須放入bin目錄下,如果要在其他目錄下記得指定路徑名御滩。這里的:label
在我們的代碼里面沒有體現(xiàn)鸥拧,這里是指標(biāo)簽名,如果我們CSV文件里面沒有:LABEL
那一列削解,那么我們必須在這里指定導(dǎo)入的這些節(jié)點(diǎn)數(shù)據(jù)是屬于什么標(biāo)簽的富弦。但是我們已經(jīng)在CSV文件里面寫了,這里就沒必要重復(fù)寫了氛驮。
--relationships:type xxx.csv
同理腕柜,xxx.csv
是導(dǎo)入的文件名,:type
是關(guān)系的類型,和label類似盏缤,同樣砰蠢,我們?cè)贑SV文件里面已經(jīng)寫了,這里就不再重復(fù)寫了唉铜。
至此台舱,導(dǎo)入完成后,打開neo4j服務(wù)器neo4j start
潭流,然后打開localhost:7474/browser
就可以看到了竞惋。
可視化及查詢
由于結(jié)點(diǎn)不多,我們直接輸入
MATCH (n) RETURN n
全部顯示灰嫉。
一開始結(jié)點(diǎn)全都是灰色的拆宛,我們可以點(diǎn)擊標(biāo)簽
來設(shè)置大小和顏色。
這是我最后的結(jié)果圖
當(dāng)然我們也可以手動(dòng)拖動(dòng)讼撒,成為剛才上面所看到的圖的樣子浑厚。
我們可以進(jìn)行搜索人工智能的邊得到人工智能的學(xué)習(xí)路線
MATCH p=()-[r:`人工智能`]->() RETURN p
也可以得到爬蟲的學(xué)習(xí)路線
MATCH p=()-[r:`爬蟲`]->() RETURN p
學(xué)Python基礎(chǔ)之前需要做什么
MATCH p=(n:知識(shí))<-[]-() where n.name="Python基礎(chǔ)" return p
學(xué)Python基礎(chǔ)之后又需要學(xué)什么
MATCH p=(n:知識(shí))-[]->() where n.name="Python基礎(chǔ)" return p
總結(jié):
這次作業(yè)其實(shí)也是取巧了,沒有直接用Cypher語句實(shí)現(xiàn)根盒,而是先構(gòu)造csv文件后用neo4j import導(dǎo)入钳幅。Cypher語句的代碼幾乎沒有。但是掌握neo4j import導(dǎo)入方法還是比較重要的郑象。
關(guān)于neo4j import有什問題可以在下面評(píng)論贡这,之前搞過一段時(shí)間茬末,可能有點(diǎn)經(jīng)驗(yàn)厂榛,或者網(wǎng)上博客挺多的,基本上都能查到相關(guān)的解決方法丽惭。
這個(gè)是自己課后記錄一下關(guān)于neo4j的一些知識(shí)點(diǎn):
http://www.reibang.com/p/6610129bbfd1