neo4j - 在 Neo4J 中查找图中节点之间的长度(最远)
问题描述
在图形数据库(neo4j)中需要帮助
这是我的图表-
节点
- 学生(ID,标题,链接)
- 类(id,标题,链接)
- 戏剧(id,标题,链接)
关系
- 学生 - LIKE {type: class/drama} - 学生
- 学生 - 不喜欢 {type: class/drama} - 学生
- 学生 - 出现 - 班级
- 学生 - 出现 - 戏剧
相似度可以通过其“长度”来衡量,其中通过“相似”关系的每一跳都是一个单位长度。找到离学生证最远的盟友
解决方案
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 收集到列表中。
推荐阅读
- npgsql - 此 npgsqltransaction 已完成,不再可用
- excel - 使用集合/字典或类进行乘法查找
- c++ - 为什么代码告诉我 Vectorsubscrition 超出范围
- python - 更改 QTableWidget 单个单元格的可编辑性
- javascript - 努力寻找正确的正则表达式
- node.js - 如何为 MongoDB 连接使用 try/catch 块
- python - 启用默认禁用的线程组
- c++ - c++ 如何通过特定的 n 个字符从 txt 文件中读取值
- lua - 使用 lua Hammerspoon 以表格格式插入文本
- android - 使用 Java 注释绑定库时出错