繁体   English   中英

计算一对节点之间的关系数并将其设置为 Neo4J 中的参数

[英]Count the number of relationships between a pair of nodes and set it as parameter in Neo4J

我有一个图表,其中一对节点之间可以有多种关系。 我想计算每对节点之间的这种关系,并将其设置为每个关系的参数。

我试过类似的东西:

MATCH (s:LabeledExperience)-[r:NextExp]->(e:LabeledExperience) 
with s, e, r, length(r) as cnt
MATCH (s2:LabeledExperience{name:s.name})-[r2:NextExp{name:r.name}]->(e2:LabeledExperience{name: e.name})
SET r2.weight = cnt

但这将权重设置为始终为 1。 我也试过:

MATCH ()-[r:NextExp]->() 
    with r, length(r) as cnt
    MATCH ()-[r2:NextExp{name:r.name}]->()
    SET r2.weight = cnt

但这需要太多时间,因为有超过 90k 的关系并且没有索引(因为它们不可能在边缘上)。

由于您计数的方式,它们始终设置为 1。

当您按s, e, r分组时,总是会产生一行。 但是,如果您为每个s, e collect(r) s, e那么您将获得这两个节点之间所有:NextExp关系的集合。

此外, length()用于测量匹配路径中的长度(节点数),不应直接作用于关系。

匹配关系并将它们放入每对节点的集合中。 迭代集合中的每个 rel 并设置 rels 集合的大小。

MATCH (s:LabeledExperience)-[r:NextExp]->(e:LabeledExperience) 
WITH s, e, collect(r) AS rels
UNWIND rels AS rel
SET rel.weight = size(rels)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM