我必须计算多个起始节点和一个目标节点之间的所有节点。 我配置了一个遍历器进行计数,但是在某些情况下,路径中存在循环并且过程没有结束。
我该怎么办?
这是Java代码:
Node destination = db.findNode(Label.label("Job"), "jobId", jobId);
HashSet<Long> startNodes = new HashSet<>();
HashSet<Long> pathNodes = new HashSet<>();
int numPaths = 0;
ResourceIterator<Node> iterator = db.findNodes(Labels.Inicio);
while (iterator.hasNext()){
startNodes.add(iterator.next().getId());
}
TraversalDescription td = db.traversalDescription()
.depthFirst()
.uniqueness( Uniqueness.NODE_PATH )
.expand(PathExpanders.forTypeAndDirection(RelTypes.SIGUIENTE, Direction.INCOMING))
.evaluator(new Evaluator() {
@Override
public Evaluation evaluate(Path path) {
if( startNodes.contains(path.endNode().getId())) {
return Evaluation.INCLUDE_AND_PRUNE;
}
return Evaluation.EXCLUDE_AND_CONTINUE;
}
});
while(numPaths < startNodes.size()){
for ( Path allpath: td.traverse(destination)) {
for (Node node : allpath.nodes()) {
pathNodes.add(node.getId());
}
numPaths+=1;
}
}
return Stream.of(new LongResult((long)pathNodes.size()));
}
谢谢!