将2个节点之间的多个关系转换为具有权重的单个关系 [英] Convert multiple relationships between 2 nodes to a single one with weight

查看:73
本文介绍了将2个节点之间的多个关系转换为具有权重的单个关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下图表,描述了在文档中同时出现的汽车品牌:

I have the following graph, describing co-occurrence of car brands in documents:

CREATE 
  (`0` :Car {value:"Ford"})
, (`1` :Car {value:"Subaru"})
, (`2` :Car {value:"VW"})
, (`0`)-[:`DOCUMENT` {value:"DOC-1"}]->(`1`)
, (`0`)-[:`DOCUMENT` {value:"DOC-2"}]->(`1`)
, (`1`)-[:`DOCUMENT` {value:"DOC-3"}]->(`2`);

如果两个节点之间有很多关系(出于可视化的目的),我想将其替换为一个并计算权重:

If there are many relationships between two nodes - for the purpose of visualization - I want to replace it with a single one and calculate the weight:

VW ---1--- Subaru ---2--- Ford

如何实现?

我尝试了以下查询:

MATCH (n1)-[r1:DOCUMENT]-(n2)
RETURN n1, n2, apoc.create.vRelationship(n1, 'WEIGHT', {weight:count(r1)}, n2);

但这不是不是预期结果:

推荐答案

如果未在MATCH (n1)-[r1:DOCUMENT]-(n2) RETURN *;中指定关系方向,则返回每个关系两次:

If the relationship direction is not specified in MATCH (n1)-[r1:DOCUMENT]-(n2) RETURN *;, every relationship is returned twice:

╒══════════════════╤══════════════════╤═════════════════╕
│"n1"              │"n2"              │"r1"             │
╞══════════════════╪══════════════════╪═════════════════╡
│{"value":"Ford"}  │{"value":"Subaru"}│{"value":"DOC-1"}│
├──────────────────┼──────────────────┼─────────────────┤
│{"value":"Ford"}  │{"value":"Subaru"}│{"value":"DOC-2"}│
├──────────────────┼──────────────────┼─────────────────┤
│{"value":"Subaru"}│{"value":"Ford"}  │{"value":"DOC-1"}│
├──────────────────┼──────────────────┼─────────────────┤
│{"value":"Subaru"}│{"value":"Ford"}  │{"value":"DOC-2"}│
├──────────────────┼──────────────────┼─────────────────┤
│{"value":"Subaru"}│{"value":"VW"}    │{"value":"DOC-3"}│
├──────────────────┼──────────────────┼─────────────────┤
│{"value":"VW"}    │{"value":"Subaru"}│{"value":"DOC-3"}│
└──────────────────┴──────────────────┴─────────────────┘

通过将MATCH子句更改为MATCH (n1)-[r1:DOCUMENT]->(n2)MATCH (n1)<-[r1:DOCUMENT]-(n2)来指定方向.查询的其余部分正确.

Specify the direction by changing the MATCH clause to either MATCH (n1)-[r1:DOCUMENT]->(n2) or MATCH (n1)<-[r1:DOCUMENT]-(n2). The remaining part of the query is correct.

这篇关于将2个节点之间的多个关系转换为具有权重的单个关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆