gpt4 book ai didi

neo4j - Cypher - 使用计算值创建关系

转载 作者:行者123 更新时间:2023-12-03 04:49:33 29 4
gpt4 key购买 nike

我正在研究 Neo4j 并使用其 REST API 和 Cypher 操作数据。
我有以下代码:

MATCH (u:USER) WHERE id(u) = 10192
MATCH (uc:USERS_CLUSTER) WHERE id(uc) = 19618
MATCH (u)-[r1:HAVE]->(i:ITEM)<-[r2:HAVE]-(u2:USER)-[ic:IN_CLUSTER]->(uc)
OPTIONAL MATCH (u)-[oldic:IN_CLUSTER]->(uc)
WHERE (u) <> (u2)
DELETE oldic
// --> PROBLEM --> CREAT (u)-[:IN_CLUSTER {score: XXXXXXXXX}]->(uc)
RETURN id(u),u,id(uc),uc,
// --> VALUE -->
((avg(abs(2-abs(r1.rank-r2.rank))*(2-abs(r1.rank-r2.rank)))+4)/8)*100 as calcedMatch
ORDER BY calcedMatch DESC

我正在计算一个值calcedMatch,并且我可以毫无问题地返回它。但我想做的是创建一个新的 IN_CLUSTER 关系,并具有一个具有 calcedMatch 值的属性 score (我放置 XXXXXXXXX 的位置)。这可能吗?

最佳答案

建议不要使用节点的id作为引用;它在分配的节点或关系的上下文中不是不可变的(即,当对象被销毁时,它们可以被重用)。

我稍微更新了您的查询。您不需要删除关系然后重新创建它。您只需使用 MERGE 即可,如果它不存在,它将创建它。然后您可以在其上设置新的分数。

MATCH (u:USER) WHERE id(u) = 10192
WITH u
MATCH (uc:USERS_CLUSTER) WHERE id(uc) = 19618
WITH uc
MATCH (u)-[r1:HAVE]->(i:ITEM)<-[r2:HAVE]-(u2:USER)-[ic:IN_CLUSTER]->(uc)
WHERE (u) <> (u2)
WITH u, uc, ((avg(abs(2-abs(r1.rank-r2.rank))*(2-abs(r1.rank-r2.rank)))+4)/8)*100 as calcedMatch
MERGE (u)-[ic:IN_CLUSTER]->(uc)
set ic.score = calcedMatch
RETURN id(u),u,id(uc),uc, ic.score
ORDER BY ic.score DESC

关于neo4j - Cypher - 使用计算值创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595206/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com