我需要根據有序路徑從neo4j graphdb中選擇節點。如何在neo4j java遍歷中排除連續的RelationshipTypes?
我需要路徑有以下限制:
1)的路徑可以遵循類型C,d,和傳出中號
2)C型絕不能遵循類型C或M型
3)D型絕對不能跟隨D型或M型
如何爲此編寫java評估程序?
我需要根據有序路徑從neo4j graphdb中選擇節點。如何在neo4j java遍歷中排除連續的RelationshipTypes?
我需要路徑有以下限制:
1)的路徑可以遵循類型C,d,和傳出中號
2)C型絕不能遵循類型C或M型
3)D型絕對不能跟隨D型或M型
如何爲此編寫java評估程序?
這是我最終使用的評估者,其中IS_MEMBER是問題中描述的關係M.
public Evaluation evaluate(final Path path) {
if (path.length() == 0) {
return Evaluation.EXCLUDE_AND_CONTINUE;
}
boolean isOutgoingIS_MEMBER = (
path.lastRelationship().getEndNode() ==
path.endNode() &&
(path.lastRelationship()
.isType(ReqsDb.RelTypes.IS_MEMBER)));
boolean isRelTypeUnique = true;
Iterator<Relationship> i =
path.reverseRelationships().iterator();
i.next();
while (i.hasNext()) {
if (i.next().isType(path.lastRelationship()
.getType())) {
isRelTypeUnique = false;
break;
}
}
boolean included = isOutgoingIS_MEMBER || isRelTypeUnique;
boolean continued = included;
return Evaluation.of(included, continued);
}
您可以使用PathExpander和可選的(用於執行)BranchState來保持每個分支在哪裏a.t.m的狀態。而不是在每次評估中查看路徑