基于内容的过滤(Content-based filtering):该技术通过比较商品之间的相似性或者相关性进行推荐。这种方式忽略用户的购买行为,只考虑商品之间的相似关系。
MATCH p=(m:Movie {title: "Net, The"})-[:ACTED_IN|:IN_GENRE|:DIRECTED*2]-() RETURN p LIMIT 25
运行结果如下图:
分析:
Cypher 语句的意思是:找出25条记录,该记录满足以下条件之一:
该记录中的电影是电影m 有相同的流派(IN_GENRE)
出演过电影m的演员,出演过该电影(ACTED_IN)
执导过电影m的导演,执导过该电影(DIRECTED)
注意:此语句返回的记录P,是一条关系链,并不仅仅是某一部电影。
另外,关系的运算,用到了 | 或。:DIRECTED*2 中的 *2 表示关系长度为2的关系。
这里举个例子:
MATCH p=(m:Movie {title: "Net, The"})-[:DIRECTED]-() RETURN relationships(p) as r
返回结果:
╒════╕
│"r" │
╞════╡
│[{} ]│
└────┘
MATCH p=(m:Movie {title: "Net, The"})-[:DIRECTED*2]-() RETURN relationships(p) as r
返回结果:
╒═══════╕
│"r" │
╞═══════╡
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
└───────┘
MATCH p=(m:Movie {title: "Net, The"})-[:DIRECTED*]-() RETURN relationships(p) as r
返回结果:
╒═══════╕
│”r” │
╞═══════╡
│[{}] │
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
├───────┤
│[{},{}]│
└───────┘
从上面可以看出,[:DIRECTED] 表示一层关系, [:DIRECTED*2]表示2层关系,[:DIRECTED*]表示任意多层关系。