首页 > 解决方案 > 在 Neo4J 中查找图中节点之间的长度(最远)

问题描述

在图形数据库(neo4j)中需要帮助

这是我的图表-

节点

关系

相似度可以通过其“长度”来衡量,其中通过“相似”关系的每一跳都是一个单位长度。找到离学生证最远的盟友

标签: neo4j

解决方案


MATCH (s:Student{id :"studentId"})-[r:like*]->(s1:Student)
WITH s , s1 , COLLECT(SIZE(relationships(r))) as distanceList
WITH s, s1, apoc.coll.sort(distanceList)  as sortedDistanceList
WITH s, s1 , sortedDistanceList[0] as closestDistance ORDER BY closestDistance DESC LIMIT 1 
RETURN s1.id as farthestNodeId

首先尝试找到所有连接到给定学生的具有可变长度的学生节点。一个学生可以通过多种方式连接到其他学生。因此,我们将所有路径的距离存储在 distanceList 中。然后,我们可以对列表进行排序以获得 minimumPath 。最长的最小路径是最远的节点。在相同的最远距离处可以有多个节点。如果你想得到所有这些,你可以将所有这些学生 id 收集到列表中。


推荐阅读