그래프가 1M 노드입니다. 데이터 모델은 의도적으로 단순합니다. 엔티티와 IDType 노드가 있습니다. 단일 Entity는 1 : 많은 IDType 노드를 가질 수 있습니다. 그리고 IDType 노드는 1 : 많은 엔티티에 연결될 수 있습니다. 이것은 그래프를 형성합니다.Neo4j에서 노드를 함께 클러스터링하는 방법
목표는 함께 연결되는 IDType과 엔티티의 모든 클러스터를 노드 클러스터라고 부르는 것입니다 (일부 그래프는 서브 그래프라고 부름). 1M 노드가 있다고 상상해보십시오. 그래프 데이터에서 이와 같은 "클러스터"를 찾고 싶습니다.이를 수행하는 방법을 찾으려고합니다. 필자는 믿는 사이퍼 쿼리를 작성했지만 의도 한대로 수행하는지는 분명하지 않습니다.
질문 : 그래프를 효율적으로 탐색하고 노드를 클러스터링하여 행 기반 결과 세트로 반환 할 수있는 단일 행 또는 행 그룹이 내 Python 드라이버 프로그램에 설정되어 작동하도록하는 방법 클러스터. 이것이 내 결과의 정확한 구조 일 필요는 없지만 이것은 내가 찾고있는 것에 대한 감각입니다.
클러스터 | 노드 1 | 2,3,4,5,6,7 2 | 10,11,12,13 3 | 15,17,19,20,21,25,27,28, 33
여기서 "클러스터"는 노드 목록을 임의로 클러스터링 한 것입니다 (솔직히 말해서 클러스터의 모음 일 뿐이거나 모든 관련이 있다고 말하는 다른 방법 일 경우 솔직히 말해서 황금입니다) . "nodes"숫자는 모든 Entity 노드에 태그하는 고유 한 정수 기반 속성을 나타냅니다.
쿼리는 다음과 같습니다. 개념은 "엔티티"노드가 1 또는 "ID"노드를 가질 수 있으며 "HAS_ID"관계를 통해 서로 관련된 "엔티티"와 "ID"를 모두 얻으려고하는 것입니다.
개념적 Entity1이 같은 데이터에 존재하는 관계가있는 경우 -> ID1 < --Entity2 -> ID2 < --Entity3 -> ID3 < --Entity4 -> ID4 < - 그런 다음 엔티티 5를 함께 클러스터링하여이 노드 그룹을 나타내는 고유 번호를 생성 할 수 있습니다. 내 예제에는 5 개의 엔티티가 있지만 2 개의 엔티티 또는 50 개의 엔티티가 모두 서로 관련 될 수 있기 때문에 가변 길이 경로가 필요한 것입니다.
다음은이 작업을 그래프에서 시도한 것입니다. 하지만 1) 맞습니까? 2) 무기한으로 작동하는 것처럼 보이기 때문에 효율적입니까? 3) 어떻게 이들을 함께 그룹화하는 것이 가장 좋습니까? ,
match
(n:Entity)-[e1:HAS_ID*]-(o)
where n.key <> o.key
return *
limit 10
;
는 또한
match (n:Entity)-[e1:HAS_ID*]-(o)
where n.key <> o.key
with distinct n.key as key_1, o.key as key_2
return key_1, collect(key_2)
limit 100
;
이 내가 원하는 가까이 할 보인다 시도했습니다,하지만, 난 여전히 즉, 주어진 키에 대한 하나의 그룹을받지 못했습니다 나는 5 개의 행을 반환 할 수 있습니다. 그러나 그들은 여전히 관련이 있습니다. 나는 그 경우에 1 행을 가질 것입니다. 그는 예를 들어, "49518"키가 첫 번째와 두 번째 행에 있음을 볼 수 있습니다. 오히려 모두 함께 그룹화 한 행이 있어야합니다.
49518 [49004, 49871, 49940, 50525, 49101, 49625, 50165, 50017, 49098, 50383]
49940 [49088, 49706, 50292, 50470, 49140, 49258, 49216, 49559, 50004, 50346, 49237, 49518, 49894, 49101, 49625, 50165, 50017, 49098, 50383]
신속한 회신과 세부 사항에 감사드립니다. 나는 아직도 곤란하다. (나는 문제의 세부 사항을 너무 잘 설명하지 못해서 위의 질문에 공란을 채울 수 있는지 알 수있다.) – DAE
내 질문을 업데이트했다. 이것이 더 도움이된다면 – DAE
아, 작거나 큰 그룹에 상관없이 전체 그룹을 찾고 있습니다. 각 그룹은 하위 그래프에서 다른 ID 로의 [: HAS_ID] 연결이없는 완전한 하위 그래프 여야합니다. 엔티티? 까다로운 문제 ... – InverseFalcon