作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!