neo4j cypher 如何找到关系中特定节点的存在计数?

neo4j cypher How to find existence count of a specific node in relations?

在我的应用程序中,我将尝试计算节点的介数中心性。这里是 Betweenness Centrality Calculation Formula。分母只是两个节点之间关系的计数。而分子是这个关系之间特定节点的存在计数。那么我怎样才能找到关系中节点的存在计数呢?

例如这个密码的结果:MATCH p=allShortestPaths( (u1{name:1174}) - [*..20] - (u2{name:1179}) ) return p

A graph between 2 specific nodes。我如何在 nodes:1174-1179

之间的关系中找到 node:1204 的转换计数

很快,node Anode B之间有最短路径。其中有多少包含节点 node C ?

您可以对路径变量使用 nodes() 函数来获取给定路径的节点集合。从那里您可以检查是否存在特定的先前匹配的节点。这是一种方法:

MATCH (n{name:1204}) 
MATCH p=allShortestPaths( (u1{name:1174}) - [*..20] - (u2{name:1179}) ) 
WITH p, case when n in nodes(p) then 1 else 0 end as occurrences
RETURN count(p) as shortestPathCount, sum(occurrences) as occurrencesCount

另外,建议您在图形和查询中使用标签。目前,这是执行所有节点扫描以查找具有给定名称的任何节点,并且随着节点数量的增加,效率越来越低。如果您在节点上添加标签并在匹配中使用它们,那么您至少会执行标签扫描。如果您在 label/property 上创建索引,那么您将为查询中的起始节点执行索引查找。