gpt4 book ai didi

java - Neo4j 遍历描述 - 自定义评估器

转载 作者:行者123 更新时间:2023-11-30 06:58:19 26 4
gpt4 key购买 nike

我正在使用 Neo4j 遍历框架(Java)。我需要创建自定义评估器以包含某些条件为真的节点

我的代码是:

    @Override
public Evaluation evaluate(Path path) {
log.info("Node Id: " + path.endNode().getProperty("DIST_ID"));
long mCount = 0;
if ((Long) path.endNode().getProperty("RANK") >= 3) {
mCount++;
}
log.info("mCount " + mCount);
return Evaluation.INCLUDE_AND_CONTINUE;
}
};

TraversalDescription traversalDescription = db.traversalDescription();
Traverser traverser = traversalDescription.breadthFirst()
.relationships(RelationshipTypes.SPONSOR, Direction.OUTGOING).evaluator(e).traverse(DSTS);

DSTS 是传入节点。这意味着顶级节点。我想使用等级分割下线节点。如果示例我需要两个级别,所以我想通过使用等级分割两个级别。等级是节点的属性之一。如果等级是 5,我想收集此节点并且它的输出节点直到获得排名 5。

如果有任何可能性,请指导我......

最佳答案

您可以查看分支状态,即使用 evaluate 方法,该方法也采用 BranchState 参数。您可以使用它来保留每个访问的遍历分支的状态,并在向下移动遍历分支时进行扩充。例如

new PathEvaluator<Long> {        
public Evaluation evaluate(Path path, BranchState<Long> state) {
log.info("Node Id: " + path.endNode().getProperty("DIST_ID"));
long mCount = state.getState();
if ((Long) path.endNode().getProperty("RANK") >= 3) {
mCount++;
state.setState( mCount );
}
if ( mCount >= 5 ) {
// do something
}
log.info("mCount " + mCount);
return Evaluation.INCLUDE_AND_CONTINUE;
}
}

这相当于在每次评估时对整个路径的 RANK 进行求和,但 BranchState 使此操作更加高效。

这是你想到的吗?

关于java - Neo4j 遍历描述 - 自定义评估器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41394139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com