2

我正在使用最新版本的 Neo4j 来构建节点图和与 Java API 的关系图。

我的问题是我需要将节点遍历到一定深度。数据库中相同深度的两个节点之间可能存在关系,但我不想在遍历中返回该关系。

我试图通过实现 Evaluator 接口来制作自定义 Evaluator,但它覆盖的唯一方法是Evaluation evaluate(Path path). 它似乎没有与之相关的深度概念。

我真的很感激一些关于如何将节点与其深度相关联(从特定节点遍历时)或修剪两个节点处于同一级别的关系的建议。

4

3 回答 3

0

您是否为此尝试过Cypher,例如

start n = node(1) match p=n-[*4]->(x) return x, length(p) 

?

于 2013-01-25T09:35:16.410 回答
0

您可以使用Evaluators.atDepth()来获得一个预定义的 Evaluator,它只包含具有一定深度的路径。

在您的自定义评估器中,您可以简单地检查传递的路径参数的长度,以决定是否要包含此路径,例如:

Evaluation evaluate(Path path) {
    return path.length() == 4 ? Evaluation.INCLUDE_AND_PRUNE : Evaluation.EXCLUDE_AND_CONTINUE);
}
于 2013-01-25T11:09:01.813 回答
0

路径有一个length(),即深度。长度等于路径中的关系数,即节点数 - 1。

于 2013-01-27T20:39:29.463 回答