为了能够包含所有ID,我应该将约束设置为三个属性的组合,类似于: CREATE CONSTRAINT a_Key FOR(a:a)REQUIRE(a.Prog,a.ID,a.Year)IS UNIQUE; B也是如此。但是当我应用帖子中解释的关系时,但是对于特定的b.ID = BP 343,我在最终的图形输出中看到了多个类似的节点,如下所示,因为它们的组合键不同: BP343 is a sample id from b and green items are ID from a 我需要的只是一个蓝色的节点,因为它们在形状上有相似的ID。这怎么可能?
3条答案
按热度按时间62o28rlo1#
[更新]
你可以这样做:
注意事项:
1.为了加快查询速度,您应该考虑在
:Foo(ID)
上创建索引或uniqueness constraint。1.为了避免创建从
Foo
节点到其自身的关系,我们指定a <> b
条件。a.Year <= b.Year
条件允许相等的Year
值,因此同一对Foo
节点可以匹配两次(a/b和b/a)。因此,我们指定(a.Year = b.Year AND ID(a) < ID(b))
条件,以避免在同一对节点之间创建2个方向相反的关系。id函数返回本机ID,而不是ID
属性。最终调整
虽然上面的查询可以工作,但我们实际上不需要像注解2中所述的那样指定
a <> b
条件,因为注解3中提到的代码足以强制执行该条件。因此,您可以从查询中省略a <> b AND
。k4aesqcs2#
实际上,有一种非常酷的方法可以做到这一点,它被称为节点相似性,它的工作原理是将节点的相关属性放入特征向量中,然后在数据之上运行k-最近邻或(近似kNN)算法,这将创建前k个相似(例如:top-5)网络出的数据。
请看这里:
https://neo4j.com/docs/graph-data-science/current/algorithms/similarity/
https://www.youtube.com/watch?v=B1a3b5x1BOUhttps://www.youtube.com/watch?v=FBc__rhm6AYhttps://www.youtube.com/watch?v=Fh-alMQ7h_U
zlwx9yxi3#
为了能够包含所有ID,我应该将约束设置为三个属性的组合,类似于:
CREATE CONSTRAINT a_Key FOR(a:a)REQUIRE(a.Prog,a.ID,a.Year)IS UNIQUE;
B也是如此。但是当我应用帖子中解释的关系时,但是对于特定的b.ID = BP 343,我在最终的图形输出中看到了多个类似的节点,如下所示,因为它们的组合键不同:
BP343 is a sample id from b and green items are ID from a
我需要的只是一个蓝色的节点,因为它们在形状上有相似的ID。这怎么可能?