Neo4j 在查找匹配项时增加关系之间的权重-cypher
我在cypher中有一个查询,我创建了以下关系:Neo4j 在查找匹配项时增加关系之间的权重-cypher,neo4j,cypher,Neo4j,Cypher,我在cypher中有一个查询,我创建了以下关系: 匹配(u:user{id:“10662”})-[r:has_profile]->(p:profile) ,(u2:用户)-[r2:具有_配置文件]->(p2:配置文件) 哪里 p、 用户id p2.user\U id 和abs(u2.date_出生-u.date_出生)>=946080000 合并u-[r:matches_与{weight:rand()}]>u2 返回collect(u2.id)作为id这里是一个查询,它查找从特定用户开始的所有
匹配(u:user{id:“10662”})-[r:has_profile]->(p:profile)
,(u2:用户)-[r2:具有_配置文件]->(p2:配置文件)
哪里
p、 用户id p2.user\U id
和abs(u2.date_出生-u.date_出生)>=946080000
合并u-[r:matches_与{weight:rand()}]>u2
返回collect(u2.id)作为id
这里是一个查询,它查找从特定用户开始的所有匹配关系,增加关系的权重,并返回按权重排序的结果
MATCH (u:user { id : "10662" })-[r:matches_with]->(u2)
SET r.weight = r.weight + 1
RETURN u, r, u2
ORDER BY r.weight;
我找到了一种可以改变重量的装置。。
我在return语句之前添加了merge子句:
MATCH(u:user{id:“10662”})-[r:matches_with]->(u2)
合并(u)-[m:将_与]->(u2)匹配
设置m.重量=
不存在时的情况(重量(m))
然后toFloat(0.125)
其他最后一个(m.重量)/2
结束
返回u.id、m、u2.id
按米重订购代码>如果我的查询是第一次运行,它将运行10个与关系匹配的\u。如果我再次运行查询而不是添加权重,它将再次生成10个匹配项。我试图找出如何避免在每次匹配中使用关系重新创建匹配。您问题中的查询是不合法的,因为它引用了一个未定义的p
变量。请提供您的实际查询。我更改了原始查询以合并参数。感谢您指出这一点。您也可以在创建集m.weight=0.125上使用,在匹配集m.weight=m.weight/2.0上使用