ノードが密集している問題があり、これを回避するために、インデックス作成を使用してネイティブ Java API を使用してマッチングを実行していましたが、Cypher をもう一度見て、これが可能かどうかを知りたいと思っていました。現在、私のパターンは Java コードで次のようになっています。
Node startNode = db.getNodeById(1);
Index<Relationship> relationshipIndex = db.index.forRelationships("relationships");
for(Relationship relationship1 : startNode.getRelationships(Direction.OUT)) {
Node otherNode = relationship.getOtherNode(startNode);
String indexValue = (String)otherNode.getProperty("indexValue");
for(Relationship relationship2 : relationshipIndex.get("indexKey", indexValue)){
Node endNode = relationship.getOtherNode(startNode);
//Processing on the endNode
}
}
これをサイファーにどのように翻訳しますか?何かのようなもの:
START startNode=node(1)
MATCH startNode-[r1]->otherNode
WITH node:relationships("indexValue:" + otherNode.indexValue) as r2
RETURN r2.endNode //Notation for getting node off relationship?
関係を取得してから、このような関係を介してエンドノードを取得する場所はどこにもありません。