java使用neo4j查找与给定节点有关系的节点集的有效方法
对于给定的两个节点,是否有一种有效的方法来找到它们的一组公共节点(具有定义的关系)
例如,让节点A1
、B1
、C1
-C4
与关系x
和y
连接:
A1 --x--> C1
A1 --x--> C2
A1 --x--> C3
B1 --y--> C2
B1 --y--> C3
B1 --y--> C4
为A1(x)
和B1(y)
设置的公共节点将是[C2, C3]
你可以在下面搜索框中键入要查询的问题!
对于给定的两个节点,是否有一种有效的方法来找到它们的一组公共节点(具有定义的关系)
例如,让节点A1
、B1
、C1
-C4
与关系x
和y
连接:
A1 --x--> C1
A1 --x--> C2
A1 --x--> C3
B1 --y--> C2
B1 --y--> C3
B1 --y--> C4
为A1(x)
和B1(y)
设置的公共节点将是[C2, C3]
# 1 楼答案
在Gremlin(http://gremlin.tinkerpop.com)中,这表示为:
以下是每个步骤的作用:
塔达
祝你好运, 马尔科
http://markorodriguez.com
# 2 楼答案
在许多情况下,可以利用域的结构来提高性能。假设您知道,与
B
实体上的y
关系的数量相比,通常A
实体的x
关系更少。然后,您可以从A节点遍历两个步骤,查看B
节点的显示位置,并通过这种方式过滤出C
节点。下面是这种方法的一些代码:另一种方法是启动两个线程,从任意一侧扫描关系
第三种方法是创建一个专门的索引来帮助回答这类查询,这显然会影响insert的性能