首页 文章

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

提问于
浏览
1

在我的应用程序中,我将尝试计算节点的中介中心性 . 这是Betweenness Centrality Calculation Formula . Deminator只是两个节点之间关系的计数 . 但是,分子是这种关系之间特定节点的存在计数 . 那么如何才能找到关系中节点的存在计数?

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

A graph between 2 specific nodes . 如何找到节点的转换计数:1204节点之间的关系:1174-1179

不久, node Anode B 之间的路径最短 . 其中有多少包含节点 node C

1 回答

  • 0

    您可以在path变量上使用 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上创建索引,那么您将在查询中为起始节点执行索引查找 .

相关问题