neo4j實現社交推薦(四)

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第11天,點選檢視活動詳情

目錄

前言

在前三篇中我們基礎學會了怎麼建立標籤節點以及關聯關係設定屬性的操作,本篇我們實際模擬我們的社交軟體中的好友推薦、共同關注等的功能實現。

我們在實現前先考慮一下好友的關係及節點屬性,人物之間存在好友關係,關係上帶有關係型別及建立時間等屬性

實現

建立節點

先建立幾個社交使用者標籤的節點 powershell create (n:SocialUser {name:'李白'}) return n; create (n:SocialUser {name:'汪倫'}) return n; create (n:SocialUser {name:'孟浩然'}) return n; create (n:SocialUser {name:'杜甫'}) return n; create (n:SocialUser {name:'王昌齡'}) return n; create (n:SocialUser {name:'賀知章'}) return n; create (n:SocialUser {name:'高適'}) return n; create (n:SocialUser {name:'李陽冰'}) return n; create (n:SocialUser {name:'元丹丘'}) return n; create (n:SocialUser {name:'孔巢父'}) return n; create (n:SocialUser {name:'崔成甫'}) return n; 上面的都是李白的好友,所以我們指向關係不需要篩選,直接指向標籤

powershell match (a:SocialUser {name:'李白'}),(b:SocialUser) where b.name <> '李白' merge (a)-[:FRIEND]->(b) return a,b 檢視結果 在這裡插入圖片描述

接下來建立杜甫的好友,像李白、高適這些已經有的就不需要建立了

powershell create (n:SocialUser {name:'王維'}) return n; create (n:SocialUser {name:'嚴武'}) return n;

建立杜甫的好友關係

powershell match (a:SocialUser {name:'杜甫'}),(b:SocialUser {name:'李白'}) merge (a)-[:FRIEND]->(b); match (a:SocialUser {name:'杜甫'}),(b:SocialUser {name:'高適'}) merge (a)-[:FRIEND]->(b); match (a:SocialUser {name:'杜甫'}),(b:SocialUser {name:'王維'}) merge (a)-[:FRIEND]->(b); match (a:SocialUser {name:'杜甫'}),(b:SocialUser {name:'嚴武'}) merge (a)-[:FRIEND]->(b); 在這裡插入圖片描述 從圖譜中可以看到高適是李白跟杜甫的共同好友,如果現在加入了一個我的元素,我同時認識李白跟杜甫,那麼可以從李白跟杜甫共同關注的人中找到我可能認識的人但是在正式的具體的分析過程中還要加入地域、公司、性別、喜好等屬性來加強推薦人的準確性。