安装并加载GDS库
确保已安装并启用GDS插件。若未安装,需从Neo4j官网下载对应版本。
创建图投影
在 GDS 中创建内存中的图投影:
CALL gds.graph.project(
'nodeGraph', // 图名称
'Node', // 节点标签
'NEIGHBOR', // 关系类型
{
nodeProperties: ['degree'], // 需要加载的节点属性
relationshipProperties: {} // 关系属性(可选)
}
);
运行度中心性算法并写入属性
使用gds.degree.write方法计算每个节点的度(可指定入度、出度或总度数),并将结果存储为节点属性degree:
CALL gds.degree.write('nodeGraph', {
writeProperty: 'degree', // 写入的属性名
orientation: 'UNDIRECTED' // 方向:UNDIRECTED(总度数)、NATURAL(出度)、REVERSE(入度)
})
YIELD nodePropertiesWritten
计算中心性指标
1. PageRank
CALL gds.pageRank.write('nodeGraph', {
maxIterations: 20,
dampingFactor: 0.85,
writeProperty: 'pagerank'
});
2. 度中心性 (Degree Centrality)
CALL gds.degree.write('nodeGraph', {
writeProperty: 'degree_centrality'
});
3. 亲密中心性 (Closeness Centrality)
CALL gds.closeness.write('nodeGraph', {
writeProperty: 'closeness_centrality'
});
4. 介数中心性 (Betweenness Centrality)
CALL gds.betweenness.write('nodeGraph', {
writeProperty: 'betweenness_centrality'
});
查询结果
MATCH (n:Node) RETURN n.address AS Address, n.pagerank AS PageRank, n.degree_centrality AS DegreeCentrality, n.closeness_centrality AS ClosenessCentrality, n.betweenness_centrality AS BetweennessCentrality ORDER BY PageRank DESC;
╒═════════════╤═══════════════════╤════════════════╤═══════════════════╤═════════════════════╕ │Address │PageRank │DegreeCentrality│ClosenessCentrality│BetweennessCentrality│ ╞═════════════╪═══════════════════╪════════════════╪═══════════════════╪═════════════════════╡ │"10.104.0.73"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.105.0.71"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.105.0.72"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.101.0.73"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.103.0.71"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.101.0.71"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.107.0.73"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.108.0.73"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.107.0.71"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.103.0.73"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.106.0.71"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.101.0.72"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.104.0.71"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.109.0.72"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.109.0.73"│0.17143947585331437│0.0 │1.0 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.103.0.72"│0.16639351504031516│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.102.0.73"│0.16639351504031516│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.102.0.71"│0.16639351504031516│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.107.0.72"│0.16638840173142871│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.106.0.73"│0.16638840173142871│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.100.0.72"│0.16638840173142871│28.0 │1.0 │6.833333333333333 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.104.0.73"│0.16620703459522992│27.0 │1.0 │4.166666666666666 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.102.0.72"│0.16620703459522992│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.109.0.71"│0.16532947619296923│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.100.0.72"│0.16532947619296923│23.0 │1.0 │2.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.105.0.73"│0.16532947619296923│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.108.0.71"│0.16532947619296923│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.104.0.72"│0.16532947619296923│0.0 │0.8 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.100.0.74"│0.16028351537997002│27.0 │0.75 │2.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.106.0.72"│0.16009703493488484│0.0 │0.6666666666666666 │0.0 │ ├─────────────┼───────────────────┼────────────────┼───────────────────┼─────────────────────┤ │"10.108.0.72"│0.16009703493488484│0.0 │0.6666666666666666 │0.0 │ └─────────────┴───────────────────┴────────────────┴───────────────────┴─────────────────────┘