java – 使用neo4j查找与给定节点有关系的节点集的有效方法
发布时间:2020-05-30 03:25:59 所属栏目:Java 来源:互联网
导读:给定两个节点是否有一种有效的方法来查找一组公共节点(具有已定义的关系). 例如,使节点A1,B1,C1-C4与关系x和y连接: A1 --x-- C1A1 --x-- C2A1 --x-- C3B1 --y-- C2B1 --y-- C3B1 --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]. 解决方法在许多情况下,可以利用域的结构来提高性能.假设您知道,一般而言,与B实体上的y关系数相比,您的A实体具有更少的x关系.然后,您可以从A节点遍历两个步骤,查看B节点显示的位置,并以这种方式过滤掉C节点.以下是此方法的一些代码:Set<Node> found = new HashSet<Node>();
for ( Relationship firstRel : a1.getRelationships( Reltypes.x,Direction.OUTGOING ) )
{
Node cNode = firstRel.getEndNode();
for ( Relationship secondRel : cNode.getRelationships( Reltypes.y,Direction.INCOMING ) )
{
Node bNode = secondRel.getStartNode();
if ( bNode.equals( b1 ) )
{
found.add( cNode );
break;
}
}
}
另一种方法是启动从两侧扫描关系的两个线程. 第三种方法是创建一个专门的索引来帮助回答这种查询,这显然会损害插入性能. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Spring+Junit4进行接口测试实例代码
- Java--Socket通信(客户端服务端双向)
- Spring Boot Web应用开发 CORS 跨域请求支持
- 浅谈Java编程中string的理解与运用
- 在独立Java类中使用ClassPathXmlApplicationContext
- rx-java – RxJava中的CompositeDisposable是什么
- java – 为什么我的JNI代码没能成功找到jthrowable的getMes
- Java中的泛型类参数
- java – 将EditText设置为单行使其在按Enter后失去焦点
- Java实现的读取资源文件工具类ResourcesUtil实例【可动态更
