通过Neo4j图找到独特的路径

时间:2013-10-21 15:52:31

标签: neo4j

我有一个带有12个输入和4个输出的Neo4j图,我正在尝试使用Java Traverser编写一个查询,该查询将返回从输入节点到输出节点的14条唯一路径。我尝试过的所有查询只返回14条路径的子集。例如,下面的代码返回4个路径,但是其他10个路径都停止输出的1个节点。

RelationshipType relType = RelationshipTypes.EDGE;
TraversalDescription td = new TraversalDescriptionImpl()
      .depthFirst()
      .relationships(relType, Direction.OUTGOING);
for (Node node : inputs){
    Traverser tv = td.traverse(node);
    Iterator<Path> iter = tv.iterator();
    // ... print path
}

我也尝试过唯一性和深度设置,没有效果。

下面的查询使用Web界面返回所有14条路径,但是当我使用ExecutionEngine类时,我只返回13条路径。

START s=node(*) 
MATCH (s)-[p:EDGE*]->(c)
WHERE s.type! = "INPUT" AND c.type! = "OUTPUT"
RETURN p

如何使用Java API获取所有唯一路径?

1 个答案:

答案 0 :(得分:0)

START s=node(*) 
WHERE s.type = "INPUT" 
MATCH (s)-[p:EDGE*]->(c) 
WHERE c.type = "OUTPUT" 
RETURN p;

这有点类似于你所拥有的。它根据您提供的Neo4j控制台示例返回14个条目。