Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph 在apoc程序repo中,PathFinder的FindAllPath方法在哪里被超越?_Graph_Neo4j_Neo4j Apoc - Fatal编程技术网

Graph 在apoc程序repo中,PathFinder的FindAllPath方法在哪里被超越?

Graph 在apoc程序repo中,PathFinder的FindAllPath方法在哪里被超越?,graph,neo4j,neo4j-apoc,Graph,Neo4j,Neo4j Apoc,我正在尝试为Dijkstra的搜索添加maxDepth。 我查看了apoc过程repo源代码,发现它们在WeightedPathResult.streamWeightedPathResult中,将PathFinder与startNode和enNode一起传递,它调用PathFinder接口的FindAllPath方法来查找所有路径。 我需要更改FindAllPath方法中的代码,以便在path.length()>maxDepth.com时中断搜索,但问题是我在任何文件中都找不到该方法重写。 下面

我正在尝试为Dijkstra的搜索添加maxDepth。 我查看了apoc过程repo源代码,发现它们在WeightedPathResult.streamWeightedPathResult中,将PathFinder与startNode和enNode一起传递,它调用PathFinder接口的FindAllPath方法来查找所有路径。 我需要更改FindAllPath方法中的代码,以便在path.length()>maxDepth.com时中断搜索,但问题是我在任何文件中都找不到该方法重写。 下面是apoc dijkstra过程的一个片段

@程序
@描述(“apoc.algo.dijkstra(startNode,endNode,'KNOWS |','distance',defaultValue,numberOfWantedResults)产生路径,”+
“权重-使用关系属性名称作为成本函数运行dijkstra”)

dijkstra公共流(
@名称(“startNode”)节点startNode,
@名称(“endNode”)节点endNode,
@名称(“关系类型和方向”)字符串关系类型和方向,
@名称(“weightPropertyName”)字符串weightPropertyName,
@名称(value=“defaultWeight”,defaultValue=“NaN”)双默认权重,
@名称(value=“numberOfWantedPaths”,defaultValue=“1”)长numberOfWantedPaths){PathFinder algo=GraphAlgoFactory.dijkstra(
buildPathExpander(relTypesAndDirs),
(关系,方向)->Util.toDouble(relationship.getProperty(weightPropertyName,defaultWeight)),
(int)NumberOfWantedPath
);
返回WeightedPathResult.streamWeightedPathResult(开始节点、结束节点、算法);
}
下面是streamWeightedPathResult方法

 public static Stream<WeightedPathResult> streamWeightedPathResult(Node startNode, Node endNode, PathFinder<WeightedPath> algo) {
    Iterable<WeightedPath> allPaths = algo.findAllPaths(startNode, endNode);
    return StreamSupport.stream(allPaths.spliterator(), false)
            .map(WeightedPathResult::new);
}}
公共静态流streamWeightedPathResult(节点startNode、节点endNode、PathFinder algo){
Iterable AllPath=algo.findallPath(startNode,endNode);
返回StreamSupport.stream(allpath.spliterator(),false)
.map(加权路径结果::新建);
}}
他们从PathFinder接口调用FindAllPath方法,但它没有被重写,因此我可以在哪里对此方法进行更改???

FindAllPath()方法在neo4j库中实现,而不是在APOC代码中实现

正如您的代码片段所示,特定的
algo
实例由返回,它返回的实例实现了该方法


(以上链接均适用于neo4j库的3.4版。)

谢谢,但您建议我在何处添加maxDepth条件,以便Dijkstra在超过最大遍历节点数时中断??我应该更改traverser方法吗?在你给我的链接里?
 public static Stream<WeightedPathResult> streamWeightedPathResult(Node startNode, Node endNode, PathFinder<WeightedPath> algo) {
    Iterable<WeightedPath> allPaths = algo.findAllPaths(startNode, endNode);
    return StreamSupport.stream(allPaths.spliterator(), false)
            .map(WeightedPathResult::new);
}}