2011-06-12 3 views

답변

4

가장 쉬운 방법은 길이가 2 인 최단 경로 알고리즘을 FRIEND_OF 관계에 걸쳐 두 명의 사용자와 함께 사용하는 것입니다. 그것들은 정확히 한 친구 홉을 통해 두 사용자를 연결하는 경로입니다.

는 위의 예제는 상호 노드 1의 친구와 4

다음

enter image description here

을 반환

start a = node(1), b = node(4) match (a)--(x)--(b) return x; 
는 카피 : 사이퍼를 사용하는 경우

PathFinder<Path> finder = GraphAlgoFactory.shortestPath(
     Traversal.expanderForTypes(FRIEND_OF), 2); 
Iterable<Path> paths = finder.findAllPaths(user1, user2); 
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 
+0

시작 부분에'b' 노드를 모른다면'START a = node (1) MATCH a - x - b WHERE a - b RETURN x'를 사용할 수 있습니다. – ulkas

관련 문제