计算一对节点之间的关系数,并将其设置为Neo4J中的参数
我有一个图,其中一对节点之间可以有几个关系。 我想计算每对节点之间的关系,并将其设置为每个关系的参数 我试过这样的方法:计算一对节点之间的关系数,并将其设置为Neo4J中的参数,neo4j,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:LabeledExperien
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
收集(r),那么您将获得这两个节点之间所有:nextextsp
关系的集合
此外,用于测量匹配路径中的长度(节点数),不应直接处理关系
匹配关系并将它们放入每对节点的集合中。迭代集合中的每个rel,并设置rel集合的大小
MATCH (s:LabeledExperience)-[r:NextExp]->(e:LabeledExperience)
WITH s, e, collect(r) AS rels
UNWIND rels AS rel
SET rel.weight = size(rels)