Neo4j 做推荐 (2)—— 基于内容的过滤

基于内容的过滤(Content-based filtering):该技术通过比较商品之间的相似性或者相关性进行推荐。这种方式忽略用户的购买行为,只考虑商品之间的相似关系。


1
2
MATCH p=(m:Movie {title: "Net, The"})-[:ACTED_IN|:IN_GENRE|:DIRECTED*2]-()
 RETURN p LIMIT 25

运行结果如下图:

分析:

Cypher 语句的意思是:找出25条记录,该记录满足以下条件之一:

  1. 该记录中的电影是电影m 有相同的流派(IN_GENRE)
  2. 出演过电影m的演员,出演过该电影(ACTED_IN)
  3. 执导过电影m的导演,执导过该电影(DIRECTED)

注意:此语句返回的记录P,是一条关系链,并不仅仅是某一部电影。

另外,关系的运算,用到了 | 或。:DIRECTED*2 中的 *2 表示关系长度为2的关系。

这里举个例子:


1
MATCH p=(m:Movie {title: "Net, The"})-[:DIRECTED]-() RETURN relationships(p) as r
返回结果:
╒════╕
│"r" │
╞════╡
│[{} ]│
└────┘


1
 MATCH p=(m:Movie {title: "Net, The"})-[:DIRECTED*2]-() RETURN relationships(p) as r
返回结果:
╒═══════╕
│"r" │
╞═══════╡
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
└───────┘

1
MATCH p=(m:Movie {title: "Net, The"})-[:DIRECTED*]-() RETURN relationships(p) as r

返回结果:
╒═══════╕
│”r” │
╞═══════╡
│[{}] │
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
└───────┘

从上面可以看出,[:DIRECTED] 表示一层关系, [:DIRECTED*2]表示2层关系,[:DIRECTED*] 表示任意多层关系。

作者:imHou
来源:CSDN
原文:https://blog.csdn.net/lovehouye/article/details/83026113
版权声明:本文为博主原创文章,转载请附上博文链接!