저는 Neo4j를 처음 사용하며 소규모 사이트를 개발 중입니다.shortestPath 관계가 올바른 방향을 반영하지 않습니다.
노드와 노드 간의 관계를 설정했습니다. 쌍을 이루는 노드의 대부분은 상호 링크를 만들었습니다. 예를 들어 :
MATCH (o1 { name: 'Apollo' }),(o2 { name: 'Zeus' }), p = shortestPath((o1)-[*..6]-(o2)) RETURN nodes(p), relationships(p)
결과는 대신 "아들"의 "아버지"를 반환한다는 것입니다 :
Zeus - FATHER -> Apollo
Appollo - SON -> Zeus
나는이 두 가지 사이의 가능한 최단 경로를 찾는
shortestPath
을 사용했다.
쿼리를 [*..6]->(o2)
으로 변경하면 "SON"이 반환됩니다.
그러나 검색을 통해 나가는 관계가없는 노드가 o1
인 경우 위의 수정 된 쿼리가 실패하는 것으로 간주해야합니다.
그래서 :
- 원래 쿼리가 더 나가는 관계 노드에 대처할 수 있지만, 잘못된 관계를 반환 할 수 있습니다.
- 수정 된 쿼리는 올바른 관계를 (지금까지) 반환 할 수 있지만 "관계 없음"노드를 처리 할 수 없습니다.
물론 2 호 문제를 해결하기 위해 모든 노드를 변경할 수 있지만 너무 복잡합니다.
귀하의 조언을 얻기를 바랍니다.
감사하지만 A가의 아버지입니다 경우 때문에 나는 당신의 점에 동의하지 않았다 B, B는 A의 SON 또는 DAUGHTER가 될 수 있습니다. 또는 A가 B의 SON이면 B는 A의 아버지 또는 어머니가 될 수 있습니다. 이러한 종류의 관계는 오직 한 방향이며, 당신은 상호 관계 유형이 무엇인지를 유도 할 수 없습니다. – TaylorR
rel 유형 'PARENT_OF'를 가질 수 있으며 각 노드에서 성별을 지정할 수 있습니다. – logisima
이렇게하면 Neo4j가 손상됩니다. Neo4j가 가장 좋은 "링크"를 빠르고 직접 검색하는 대신 추가 속성을 검색해야합니다. 나는 그것이 좋은 생각이라고 생각하지 않는다. – TaylorR