我在cypher中有一个查询,我创建了一个关系:
MATCH match (u:user {id : "10662"})-[r:has_profile]->(p:profile)
, (u2:user)-[r2:has_profile]->(p2:profile)
WHERE
p.user_id <> p2.user_id
AND abs(u2.date_birth - u.date_birth) >= 94608000000
merge u-[r:matches_with { weight: rand() }]->u2
RETURN collect(u2.id) as id;
&#13;
在这种特殊情况下,当我找到u和u2之间的先前关系时,我试图仅在匹配时创建u和u2之间的关系。它只会增加关系中的权重。 我试图根据重量返回比赛。
有人可以通过此查询建议一种增加查找匹配权重的方法。谢谢。
答案 0 :(得分:1)
这是一个查询,查找从特定matches_with
开始的所有user
关系,增加关系的权重,并返回按权重排序的结果。
MATCH (u:user { id : "10662" })-[r:matches_with]->(u2)
SET r.weight = r.weight + 1
RETURN u, r, u2
ORDER BY r.weight;
答案 1 :(得分:1)
我找到了一种可以改变体重的机制。 我在return语句之前添加了merge子句:
MATCH (u:user { id : "10662" })-[r:matches_with]->(u2)
merge (u)-[m:matches_with]->(u2)
SET m.weight=
CASE WHEN NOT (HAS (m.weight))
THEN toFloat(0.125)
ELSE LAST(m.weight)/2
END
RETURN u.id, m, u2.id
ORDER BY m.weight;
&#13;
谢谢@cybersam。