面试题答案
一键面试1. Neo4j 中三元闭包基本概念
三元闭包(Triadic Closure)是指在图数据结构中,如果两个节点(A 和 B)都与第三个节点(C)相连,那么 A 和 B 之间也存在连接(或者有较高概率形成连接)的趋势。在社交网络等图结构场景中,这意味着如果两个人(A 和 B)有共同的朋友(C),那么 A 和 B 成为朋友的可能性较高。
2. 社交网络场景应用举例
假设社交网络中用户通过 FOLLOWS
关系表示关注。我们可以使用 Cypher 语句进行三元闭包分析,以找出可能有潜在关注关系的用户。
假设有如下简单社交网络节点和关系:
(:User {name: 'Alice'})-[:FOLLOWS]->(:User {name: 'Charlie'})
(:User {name: 'Bob'})-[:FOLLOWS]->(:User {name: 'Charlie'})
可以使用如下 Cypher 语句来寻找可能存在三元闭包(潜在关注关系)的用户对:
MATCH (a:User)-[:FOLLOWS]->(c:User)<-[:FOLLOWS]-(b:User)
WHERE NOT (a)-[:FOLLOWS]->(b)
RETURN a.name, b.name
上述语句含义为:
MATCH (a:User)-[:FOLLOWS]->(c:User)<-[:FOLLOWS]-(b:User)
:匹配有共同关注对象c
的两个用户a
和b
。WHERE NOT (a)-[:FOLLOWS]->(b)
:过滤掉已经存在FOLLOWS
关系的a
和b
用户对。RETURN a.name, b.name
:返回可能存在潜在关注关系的用户对的名字。