You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Cypher创建太阳图并查询中心节点Top10高rank邻居?

嘿,这就来帮你搞定Cypher创建太阳图和查询的问题!

一、创建太阳图结构(中心节点+无关联外围节点)

我们可以用Cypher批量完成这个需求:先创建带随机rank的中心节点,再生成一批带随机rank的外围节点,只建立中心到外围的连接(外围节点之间不会产生任何关联)。

给你一个可直接运行的示例,你可以根据需求调整节点数量、标签或属性范围:

// 1. 创建中心节点,带标签和随机rank属性
CREATE (center:CenterNode {name: '核心节点', rank: toInteger(rand() * 100)})

// 2. 批量创建外围节点并建立与中心的连接
// 这里用range(1, 50)生成50个外围节点,你可以改成任意数字
WITH center
UNWIND range(1, 50) AS nodeIndex
CREATE (peripheral:PeripheralNode {
    name: '外围节点_' + nodeIndex,
    rank: toInteger(rand() * 100)  // 生成0-99的随机整数rank,想扩大范围就把100改成其他数
})
// 只建立中心到外围的关系,外围之间无连接
CREATE (center)-[:CONNECTED_TO]->(peripheral)

简单解释下:

  • rand()生成0到1的随机浮点数,乘以100再转整数,就能得到0-99的随机rank;如果要更大的数值范围,比如0-999,就改成toInteger(rand() * 1000)。
  • 给中心和外围节点加不同标签(CenterNode/PeripheralNode),方便后续快速区分查询。
二、查询中心节点的Top10 Rank邻居

要找出中心节点的邻居中rank排名前10的(默认取rank最高的10个),用匹配+排序+限制的组合语句即可:

// 匹配中心节点及其所有外围邻居
MATCH (center:CenterNode)-[:CONNECTED_TO]->(neighbor:PeripheralNode)
// 返回邻居信息,按rank降序排序后取前10
RETURN neighbor.name AS 邻居名称, neighbor.rank AS 邻居Rank
ORDER BY neighbor.rank DESC
LIMIT 10

如果你的数据库里可能存在多个中心节点(太阳图一般只有一个),可以加LIMIT 1指定单个中心:

MATCH (center:CenterNode)-[:CONNECTED_TO]->(neighbor:PeripheralNode)
WITH center, neighbor
LIMIT 1  // 锁定第一个中心节点
RETURN neighbor.name AS 邻居名称, neighbor.rank AS 邻居Rank
ORDER BY neighbor.rank DESC
LIMIT 10

额外补充:如果遇到多个邻居rank并列的情况,LIMIT 10会只返回前10条结果。如果想要包含所有rank在前10梯队的节点,可以用下面的语句:

MATCH (center:CenterNode)-[:CONNECTED_TO]->(neighbor:PeripheralNode)
WITH neighbor ORDER BY neighbor.rank DESC LIMIT 10
WITH max(neighbor.rank) AS minTopRank
MATCH (center:CenterNode)-[:CONNECTED_TO]->(neighbor:PeripheralNode)
WHERE neighbor.rank >= minTopRank
RETURN neighbor.name AS 邻居名称, neighbor.rank AS 邻居Rank
ORDER BY neighbor.rank DESC

内容的提问来源于stack exchange,提问作者CypherFancy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:52:10