Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Neo4j的Java算法绑定不适用于大数据集,但Cypher可以_Java_Algorithm_Neo4j - Fatal编程技术网

Neo4j的Java算法绑定不适用于大数据集,但Cypher可以

Neo4j的Java算法绑定不适用于大数据集,但Cypher可以,java,algorithm,neo4j,Java,Algorithm,Neo4j,我尝试使用FindAllPath查找两个随机节点之间的最短路径,但程序只是停留在那里,没有输出。当我使用相对较小的toy db进行单元测试时,它工作得非常好。CPU的使用率很低,所以我不认为它是在做计算,而坚持 因此,我尝试使用ExecutionEngine,它工作得非常好,并在几微秒内返回结果。我只是好奇为什么算法API不能在一个大数据库中工作800万个节点和3亿条定向边?还是我弄错了?我几乎没有关注他们网站上的教程,我所做的更改是我没有在搜索中指定任何特定的关系类型 顺便说一下,我的Neo4

我尝试使用FindAllPath查找两个随机节点之间的最短路径,但程序只是停留在那里,没有输出。当我使用相对较小的toy db进行单元测试时,它工作得非常好。CPU的使用率很低,所以我不认为它是在做计算,而坚持

因此,我尝试使用ExecutionEngine,它工作得非常好,并在几微秒内返回结果。我只是好奇为什么算法API不能在一个大数据库中工作800万个节点和3亿条定向边?还是我弄错了?我几乎没有关注他们网站上的教程,我所做的更改是我没有在搜索中指定任何特定的关系类型

顺便说一下,我的Neo4j版本是1.9.4

代码如下:

while(startNode==null){
    startNode = nodeFinder.getSingleNodeByIndex("wikipage", "id", random.nextInt(MAX_TUPLE));
}
while(stopNode==null){
    stopNode = nodeFinder.getSingleNodeByIndex("wikipage", "id", random.nextInt(MAX_TUPLE));
}
这部分有效

ExecutionEngine engine = new ExecutionEngine(GraphDataBase.getInstance().getGraphDB());
ExecutionResult result = engine.execute("start source=node:wikipage(id=\""+startNode.getId()+"\"), dest=node:wikipage(id=\""+stopNode.getId()+"\") match p=allShortestPaths(source-[r:WIKI_LINK*..8]->dest) return nodes(p);");
但事实并非如此

PathFinder<Path> finder = GraphAlgoFactory.shortestPath(Traversal.expanderForAllTypes(Direction.OUTGOING), 8 );
Iterable<Path> paths = finder.findAllPaths( startNode, stopNode );