如何用neo4j计算共同的朋友?

时间:2011-06-12 23:02:53

标签: java database graph neo4j

我想用neo4j来管理用户之间的关系。

如何让共同的朋友使用它?

2 个答案:

答案 0 :(得分:4)

最简单的方法是在FRIEND_OF关系中使用长度为2的最短路径算法,两个用户。这些是通过一个朋友跳来连接两个用户的路径。

PathFinder<Path> finder = GraphAlgoFactory.shortestPath(
        Traversal.expanderForTypes( FRIEND_OF ), 2 );
Iterable<Path> paths = finder.findAllPaths( user1, user2 );

答案 1 :(得分:4)

如果使用cypher,以下查询将返回共同的朋友:

start a = node(1), b = node(4) match (a)--(x)--(b) return x;

上面的示例返回节点1和4的共同朋友

enter image description here

以下是图片中示例的查询及其结果的副本:

neo4j-sh (0)$ start a = node(1), b = node(4) match (a)--(x)--(b) return x;
==> +--------------------+
==> | x                  |
==> +--------------------+
==> | Node[3]{Name->"C"} |
==> +--------------------+
==> 1 row
==> 9 ms
==> 
neo4j-sh (0)$ start a = node(1), b = node(6) match (a)--(x)--(b) return x;
==> +--------------------+
==> | x                  |
==> +--------------------+
==> | Node[5]{Name->"E"} |
==> | Node[2]{Name->"B"} |
==> +--------------------+
==> 2 rows
==> 0 ms