Neo4j 使用自定义赋值器获取检索节点的深度



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

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

我尝试通过实现评估器界面来创建自定义评估器,但它覆盖的唯一方法是Evaluation evaluate(Path path)。它似乎没有与之相关的深度概念。

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

您可以使用 Evaluators.atDepth() 获取仅包含具有特定深度的路径的预定义评估器。

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

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

你有没有尝试过Cypher,比如

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

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

最新更新