Neo4j:从给定的起始节点找到触及所有关系的所有路径

时间:2013-06-12 19:52:29

标签: java neo4j graph-databases

使用Neo4j,我正在开发一个非常简单的模型,它由五个节点A..E和它们之间的八个关系组成。对于给定的起始节点,我想获得触及模型的每个关系的所有路径。每次关系都必须触摸一次。

我的代码如下:

TraversalDescription traversal = Traversal.description().uniqueness( Uniqueness.RELATIONSHIP_GLOBAL);

Traverser t = traversal.traverse( getNode("C"));
for ( Path position : t )
{
    if( position.length() == 8 ) {
        System.out.println("Solution found");
    }
}

我的问题是,遍历器不返回长度为8但只有一个的所有可能路径。

有没有办法告诉Traverser或TraversalDescription丢弃所有路径?

谢谢, 奥利

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用Cypher查询?它可能像

start n = node:someIndex(name='C') match p=n-[RELATION*8]->(x) return x, length(p) 

您也可以尝试使用Evaluators,它可以帮助您找到具有一定深度的路径。

Evaluation evaluate(Path path) {
return path.length() == 8 ? Evaluation.INCLUDE_AND_PRUNE : Evaluation.EXCLUDE_AND_CONTINUE);
 }

我希望对你有所帮助..