的之间的不同关系我不得不上基于相同的一对节点和SUM()它,然后ORDER之间的两个不同的关系BY的对相乘的属性集合值值。 例:的Neo4j - 需要在同一节点对
Let (X:amps)-[:coocr{val:1}]->b
(X:amps)-[:jacc{dist:2}]->b
(X:amps)-[:coocr{val:2}]->c
(X:amps)-[:jacc{dist:3}]->c
(X:amps)-[:coocr]->d
(X:amps)-[:jacc{dist:4}]->d
(Y:amps)-[:coocr{val:2}]->b
(Y:amps)-[:jacc{dist:3}]->b
(Y:amps)-[:coocr{val:1}]->c
(Y:amps)-[:jacc{dist:4}]->c
(Y:amps)-[:coocr{val:4}]->d
(Y:amps)-[:jacc{dist:3}]->d
现在, 1)中的每个节点B,C,d具有与X 2间的关系,Y,其是乘法和加入成对 2)返回最高值
我尝试在概率:
WITH [b,c,d] AS words
MATCH (i:amps)
MATCH n where n.word in words
MATCH p=(i-[r:jaccard]->(n)) with i,r.dist as dist UNWIND dist as distances
MATCH q=(i-[s:coocr]->(n)) with distances,i,s.val as co UNWIND co as coocr
WITH i, SUM(distances*coocr) AS agg
RETURN i,agg ORDER BY agg DESC
我aggragate功能都有工作,如:
X-[]->b has[jaccard,coocr] , so, jacc.dist*coocr.val = 1*2 =2
X-[]->c has[jaccard,coocr] , so, jacc.dist*coocr.val = 2*3 =6
X-[]->d has[jaccard,] , so, jacc.dist*null = null*2 =0
--------------
sum = 8
--------------
Y-[]->b has[jaccard,coocr] , so, jacc.dist*coocr.val = 4*2 =8
Y-[]->c has[jaccard,coocr] , so, jacc.dist*coocr.val = 1*3 =3
Y-[]->d has[jaccard,coocr] , so, jacc.dist*coocr.val = 4*4 =16
--------------
sum = 27
--------------
然后按顺序返回这些聚合。
我的查询返回的只是产品的总量,而不是全部总和。 需要实现其总和。
不太明白你想要计算什么。上述数据集的预期结果是什么? –
将更新问题 –