在Neo4j图中,我有2个节点具有相同的标签和4个属性,我希望条件检查这些属性的值是否相等,如果4个属性中的任何一个相等,我希望在这2个节点之间创建关系,如Similar_To,此关系还应包含属性(百分比),根据节点的4个属性中有多少属性匹配,我们计算百分比(如果1值为1属性匹配然后百分比是25,如果2然后百分比是50,如果3然后75,如果4然后100)想要查询这个,我可以有4如果条件在我的密码查询和我怎么写,请回复
我试过了
MATCH(n:Student),(m:Student)
WHERE id(n<>id(m) and (n.age=m.age OR n.marks=m.marks OR n.div=m.div OR n.weight=m.weight)
CREATE (n)-[:SIMILAR_TO{Percentage:25}]->(m) RETURN n,m
将创建关系,如果值为任何4属性相等,但百分比始终是25,我希望百分比值取决于属性匹配的数量
尝试着像这样
WITH 0 as x
MATCH(n:Student),(m:Student)
WHERE id(n)<>id(m)
//If n.age=m.age then x=x+25
//If n.marks=m.marks then x=x+25
//If n.div=m.div then x=x+25
//If n.weight=m.weight then x=x+25
if x<>0 then CREATE (n)-[:SIMILAR_TO{Percentage:x}]->(m)
RETURN n,m
但我不知道如何写出这些条件
1条答案
按热度按时间dluptydi1#
下面的查询是通用的,所以即使节点有〉4个属性,它仍然可以得到百分比而不改变代码。换句话说,当属性值相同时,不需要硬编码+25。
1.找出学生A(n)与学生B(m)不相同的学生。
1.假设节点n具有与m相同的属性,则在n和m的属性相等的情况下获得计数(使用reduce
1.将相似属性的计数除以n中属性的总数
1.根据属性使用n和m之间的相似性百分比创建(或合并)n和m之间的关系
参考文献:
1.约简函数 https://neo4j.com/docs/cypher-manual/current/functions/list/#functions-reduce
1.按键功能www.example.com https://neo4j.com/docs/cypher-manual/current/functions/list/#functions-keys