假设我有路径A-> B-> C-> D且关系具有属性val。 现在,我必须从路径中选择任意两个节点,如果rel.val> 0.8 如果所有节点对都为真,则返回路径
例如:
P = A-->B-->C-->D
All nodes = [A,B,C,D]
return p if{
rel.val of (A,B) >0.8
rel.val of (A,C) >0.8
rel.val of (A,D) >0.8
rel.val of (B,C) >0.8
rel.val of (B,D) >0.8
rel.val of (C,D) >0.8
}
这是我的查询,(当然查询错误):
MATCH p=(a{word:"quality"})-[r*1..2]->(b)
WHERE NONE (n IN nodes(p) WHERE size(filter(x IN nodes(p) WHERE n = x))> 1)
MATCH q = (a)-[r:coocr]->(b) where a in nodes(p) AND b in nodes(p) AND NOT b = a AND None(rel IN rels(q) WHERE rel.val < 0.8 )
RETURN p
答案 0 :(得分:2)
总之,您希望MATCH
路径,然后确保路径中的所有节点对通过满足特定条件的关系进行连接({{1} })。
有趣的问题,我认为这不是那么简单。也许我忽略了一些明显的东西?
以下是如何解决问题的想法。您首先rel.val > 0.8
路径,然后在路径中的所有节点之间MATCH
,并计算与MATCH
的关系数。此数字必须是节点数量的阶乘的大小(rel.val > 0.8
,可能的组合数量为2)。
以下查询返回关系数,但我不知道如何将其与节点数的阶乘进行比较:
num relationships == (num nodes)!
我没有找到阶乘的内置函数,所以你必须研究这个。