2

ユーザー間の関係を管理するためにneo4jを使用したいと思います。

どうすれば相互の友達を作ることができますか?

4

2 に答える 2

4

最も簡単な方法は、FRIEND_OF関係全体で、2人のユーザーで長さ2の最短経路アルゴリズムを使用することです。これらは、1つのフレンドホップを介して2人のユーザーを接続するパスです。

PathFinder<Path> finder = GraphAlgoFactory.shortestPath(
        Traversal.expanderForTypes( FRIEND_OF ), 2 );
Iterable<Path> paths = finder.findAllPaths( user1, user2 );
于 2011-06-12T23:21:05.543 に答える
4

サイファーを使用する場合、次のクエリは相互の友達を返します。

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

上記の例では、ノード1と4の相互のフレンドが返されます。

ここに画像の説明を入力してください

以下は、画像の例のクエリとその結果のコピーです。

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
于 2012-06-19T05:50:43.593 に答える