1. 程式人生 > >Neo4j 做推薦 (6)—— 加權內容演算法

Neo4j 做推薦 (6)—— 加權內容演算法

除了考慮計算相似性的型別之外,還有更多的特徵,如演員和導演。讓我們使用加權總和根據他們共同的演員、流派和導演的數量對建議進行評分,以提高分數。根據重疊特徵的數量和型別計算加權和:

// Find similar movies by common genres
MATCH (m:Movie) WHERE m.title = "Wizard of Oz, The"
MATCH (m)-[:IN_GENRE]->(g:Genre)<-[:IN_GENRE]-(rec:Movie)

WITH m, rec, COUNT(*) AS gs

OPTIONAL MATCH (m)<-[:ACTED_IN]-(a:Actor)-[:ACTED_IN]->(rec)
WITH m, rec, gs, COUNT(a) AS as

OPTIONAL MATCH (m)<-[:DIRECTED]-(d:Director)-[:DIRECTED]->(rec)
WITH m, rec, gs, as, COUNT(d) AS ds

RETURN rec.title AS recommendation, (5*gs)+(3*as)+(4*ds) AS score ORDER BY score DESC LIMIT 100

分析:

1. 首先把movie選擇出來

2. 把相同流派的電影找出來,並計算流派的總和

3. 同理計算出演員和導演

4. 根據流派佔比5,演員佔比3,導演佔比4來計算總分值

由此得出與電影 m 具有相似特徵的其他電影的排名。

執行結果如下: