Neo4j 做推薦 (2)—— 基于內(nèi)容的過濾前文只是簡單描述了內(nèi)容過濾的概念和簡單演示。
在此,我們將從具體實例來介紹如何使用基于內(nèi)容的過濾方法來給用戶推薦電影。
首先,基于共同類型的相似性,如果用戶看過《Inception》,我們就可以給用戶推薦和該電影具有相同分類(流派)的電影。
// Find similar movies by common genres
MATCH (m:Movie)-[:IN_GENRE]->(g:Genre)<-[:IN_GENRE]-(rec:Movie)
WHERE m.title = "Inception"
WITH rec, COLLECT(g.name) AS genres, COUNT(*) AS commonGenres
RETURN rec.title, genres, commonGenres
ORDER BY commonGenres DESC LIMIT 10;
通過上面的Cypher語句,可以很清晰地看到,篩選出 m 的條件是title 屬性為“Inception”,然后通過關(guān)系(:IN_GENRE)找出流派(g:Genre),此處注意關(guān)系的方向是 -> 。找出?(g:GENRE) 之后,反向查詢 <- 有該流派的所有電影。
在結(jié)果返回中,COLLECT 首先把流派名放入一個集合中,然后計算所屬流派的數(shù)量(此數(shù)量是電影m 和電影rec 具有相同流派的數(shù)量)。返回結(jié)果再排個序,取最多的前10條。

Neo4j 做推薦 (1)—— 基礎(chǔ)數(shù)據(jù)
Neo4j 做推薦 (4)—— 基于內(nèi)容的過濾(續(xù))
Neo4j 做推薦 (6)—— 加權(quán)內(nèi)容算法
Neo4j 做推薦 (7)—— 基于內(nèi)容的相似度量標(biāo)準(zhǔn)
Neo4j 做推薦 (8)—— 協(xié)同過濾(利用電影評級)
Neo4j 做推薦 (9)—— 協(xié)同過濾(人群的智慧)
Neo4j 做推薦 (10)—— 協(xié)同過濾(皮爾遜相似性)