Graph 基于查询结果在neo4j中创建边

Graph 基于查询结果在neo4j中创建边,graph,neo4j,cypher,Graph,Neo4j,Cypher,我正在将电子商务软件中的搜索术语转换图建模为节点(术语)和边(转换)图。如果用户在搜索栏中键入例如iphone,然后将查询细化为iphone6s,这将被建模为两个节点以及这些节点之间的一条边。不同用户的相同术语转换将导致节点之间出现多条边 我现在想创建一个累计权重为4的边,以表示4个用户完成了这个特定的转换。如何将count(*)查询的结果与create查询相结合,以生成属性为weight=4的边 我的计数(*)查询是: MATCH (n:Term)-[r]->(n1:Term) RET

我正在将电子商务软件中的搜索术语转换图建模为节点(术语)和边(转换)图。如果用户在搜索栏中键入例如
iphone
,然后将查询细化为
iphone6s
,这将被建模为两个节点以及这些节点之间的一条边。不同用户的相同术语转换将导致节点之间出现多条边

我现在想创建一个累计权重为4的边,以表示4个用户完成了这个特定的转换。如何将
count(*)
查询的结果与create查询相结合,以生成属性为
weight=4的边

我的
计数(*)
查询是:

MATCH (n:Term)-[r]->(n1:Term)
RETURN type(r), count(*)
我希望组合查询看起来像这样,但是在
cypher
中,这种类似sql的组合似乎是不可能的:

MATCH (n:Term), (n1:Term)
WHERE (n)-[tr:TRANSITION]->(n1)
CREATE (n)-[actr:ACC_TRANSITION {count: 
    MATCH (n:Term)-[r]->(n1:Term) RETURN 
    count(*)}
]->(n1)
RETURN n, n1
用于生成有效累积转换的非通用查询是:

MATCH (n:Term), (n1:Term)
WHERE n.term = 'iphone' AND n1.term ='iphone 6s'
CREATE (n)-[actr:ACC_TRANSITION {count: 4}]->(n1)
RETURN n, n1
关于如何处理和建模这个问题,还有其他想法吗

像这样使用:

MATCH (n:Term)-[r]->(n1:Term)
WITH n as n, count(*) as rel_count, n1
CREATE (n)-[:ACC_TRANSITION {count:rel_count}]->(n1)
RETURN n, n1

如果先匹配节点和关系,然后使用集合,则不会生成重复的节点或关系

Match (n:Term)-[r]->(n1.Term)
with n as nn,count(r) as rel_count,n1 as nn1
set r.ACC_TRANSITION=rel_count
return nn,nn1,r

create函数将创建重复项。

在第一个查询中使用的是count(*),而在第二个查询中使用的是create函数创建您的关系您能制定查询吗?使用
时会是什么样子?谢谢对不起,我工作很忙,现在无法解释更多我的答案:)他想创建新的关系,并在该关系中添加计数属性。