我想遍历一个图并返回链接2个节点的所有路径,其中第一个关系是传出,第二个传入。例如,如果关系是投票,我想看到从节点25到节点86的所有可能的路径,我有MATCH p=((n {id:"25"}) -[*1..2]-> (m {id:"86"})) RETURN p;
然后,我想检查是否在返回的路径中,我有同样类型的属性在传出和传入关系(如果他们拥有相同的投票)。
我尝试在java中使用图遍历api来完成该操作,但是我返回的是单个路径如何获取所有可能的路径以检查它们?neo4j java遍历返回多个路径而不是一个
{它基本上是与所有普通的邻居问题检查关系}
int common = 0;
int diff = 0;
for (Path position : graphDb.traversalDescription()
.relationships(Wikilections_user.RelTypes.Voted, Direction.OUTGOING)
.relationships(Wikilections_user.RelTypes.Voted, Direction.INCOMING)
// .evaluator(Evaluators.fromDepth(1))
.evaluator(Evaluators.toDepth(2))
.evaluator(Evaluators.includeWhereEndNodeIs(node2))
// .evaluator(Evaluators.excludeStartPosition())
.traverse(node1))
{
Iterable<Relationship> myRels = position.reverseRelationships();
for (Relationship temp : myRels) {
System.out.println((temp.getStartNode()).getProperty("id") + " with " + temp.getProperty("with") + " :" + (temp.getEndNode()).getProperty("id"));
}
String with = "";
int i = 0;
for (Relationship temp : myRels) {
if (i == 0) {
with = (String) temp.getProperty("with");
i++;
}
if (i == 1) {
if (((String) temp.getProperty("with")).equals(with)) {
common++;
} else {
diff++;
}
}
}
}
return (double) common * 100/(common + diff);
你是对我真正需要的关系的独特性.uniqueness(Uniqueness.RELATIONSHIP_PATH),但我怎么能做出一定第一个获得传出,然后传入而不是2个传出或2个传入或传出? – anu 2015-02-09 11:13:30
我的意思是我如何使用 遍历(Traverser.Order traversalOrder,StopEvaluator stopEvaluator,ReturnableEvaluator returnableEvaluator,RelationshipType firstRelationshipType,Direction firstDirection,RelationshipType secondRelationshipType,Direction secondDirection) 为了得到我想要的这个例子 – anu 2015-02-09 11:44:39