Neo4J Java API - 特定节点标签或排除特定关系的最短路径
Neo4J Java API - Shortest Path for specific node label or excluding a particular relationship
我正在使用 Neo4J 构建一个简单的应用程序,我正在使用 Java API.
我的图中有两个节点标签
1. Class
2.实例
我想得到两个节点之间的最短路径,(a:Instance)和(b:Instance)
假设有2条路径连接节点。
路径 1:
(a:Instance)-[:is_a]->(x:Class)<-[:is_a]-(b:Instance)
路径 2:
(a:Instance)-[:relType1]->(z:Instance)-[:relType2]->(y:Instance)<-[relType3]-(b:Instance)
我想要的结果是 Path 2。我希望路径只涉及带有 Instance 标签的节点。或者,如果我不能这样做,我想要不包含 is_a 关系类型的路径。
我现在的代码是这样的:
PathFinder<Path> finder = GraphAlgoFactory.shortestPath(PathExpanders.allTypesAndDirections(), CommonCons.MAX_HOP );
Node startNode;
Node endNode;
Path path = finder.findSinglePath(startNode, endNode);
在 PathExpanders 中,我没有看到存在针对特定节点标签的过滤器。而且我在 PathExpander 中看不到可以包含所有关系类型 除了 一种特定的关系类型。
有办法实现吗??
我只是不想在我的路径中存在带有 Class 标签或与 is_a 类型的关系的节点.
对不起我的英语
谢谢
我解决了
我使用 PathExpanderBuilder 构建了我自己的 PathExpander。首先,我将 PathExpander 设置为涵盖所有类型和方向。之后,我从扩展器中删除了 is_a RelationshipType。
我的最终代码是这样的:
PathExpanderBuilder peBuilder = PathExpanderBuilder.allTypesAndDirections().remove(RelationshipType.withName(CommonCons.REL_IS_A));
PathFinder<Path> finder = GraphAlgoFactory.shortestPath(peBuilder.build(), CommonCons.MAX_HOP );
Node startNode;
Node endNode;
Path path = finder.findSinglePath(startNode, endNode);
我正在使用 Neo4J 构建一个简单的应用程序,我正在使用 Java API.
我的图中有两个节点标签
1. Class
2.实例
我想得到两个节点之间的最短路径,(a:Instance)和(b:Instance)
假设有2条路径连接节点。
路径 1:
(a:Instance)-[:is_a]->(x:Class)<-[:is_a]-(b:Instance)
路径 2:
(a:Instance)-[:relType1]->(z:Instance)-[:relType2]->(y:Instance)<-[relType3]-(b:Instance)
我想要的结果是 Path 2。我希望路径只涉及带有 Instance 标签的节点。或者,如果我不能这样做,我想要不包含 is_a 关系类型的路径。
我现在的代码是这样的:
PathFinder<Path> finder = GraphAlgoFactory.shortestPath(PathExpanders.allTypesAndDirections(), CommonCons.MAX_HOP );
Node startNode;
Node endNode;
Path path = finder.findSinglePath(startNode, endNode);
在 PathExpanders 中,我没有看到存在针对特定节点标签的过滤器。而且我在 PathExpander 中看不到可以包含所有关系类型 除了 一种特定的关系类型。
有办法实现吗??
我只是不想在我的路径中存在带有 Class 标签或与 is_a 类型的关系的节点.
对不起我的英语
谢谢
我解决了
我使用 PathExpanderBuilder 构建了我自己的 PathExpander。首先,我将 PathExpander 设置为涵盖所有类型和方向。之后,我从扩展器中删除了 is_a RelationshipType。
我的最终代码是这样的:
PathExpanderBuilder peBuilder = PathExpanderBuilder.allTypesAndDirections().remove(RelationshipType.withName(CommonCons.REL_IS_A));
PathFinder<Path> finder = GraphAlgoFactory.shortestPath(peBuilder.build(), CommonCons.MAX_HOP );
Node startNode;
Node endNode;
Path path = finder.findSinglePath(startNode, endNode);