Neo4j 查找节点组之间所有可能的关系

Neo4j 查找节点组之间所有可能的关系,neo4j,cypher,Neo4j,Cypher,我有一个包含数百万个节点和关系的大图。 我需要找到节点组之间所有可能的关系,我想你的问题可能有点不清楚。是否要返回已连接的所有对的列表?如果是这样,下面是一个将返回所有对的密码查询: START n=node(1,2,3), m=node(1,2,3) MATCH n-[?*..4]->()-[r]->m RETURN DISTINCT r; 我同意Nicholas的观点,您应该尝试使用Cypher,您也可以通过RESTAPI发送Cypher(请参阅) 试一试 当然,用100个节点

我有一个包含数百万个节点和关系的大图。
我需要找到节点组之间所有可能的关系,我想你的问题可能有点不清楚。是否要返回已连接的所有对的列表?如果是这样,下面是一个将返回所有对的密码查询:

START n=node(1,2,3), m=node(1,2,3)
MATCH n-[?*..4]->()-[r]->m
RETURN DISTINCT r;

我同意Nicholas的观点,您应该尝试使用Cypher,您也可以通过RESTAPI发送Cypher(请参阅)

试一试

当然,用100个节点ID的长列表替换
(1,2,3)

如果我没弄错的话,那就是你要找的

嗨,Nicholas,我想找到特定节点组中的所有对在我的例子中,我有数百万个节点的巨大图,但检查组只包括100个节点(*)这都是图Hi A Sz,我检查了你的查询,它运行正常,但直到我使用<100个元素的组。我的问题也是如此。当我只将组大小增加1=>101而不是100时,你会像我一样死。我真的认为服务器对此问题有一些配置,但我不知道在哪里搜索。是的,100是一种将数字四舍五入为任意随机内存或类似限制的方法。必须是某种配置。您使用的是哪一版本的neo4j?我想这是最后一个稳定的neo4j 1.8.2。我查看了配置文件,没有发现任何匹配项。也许这是对
cypher
查询的硬编码限制?我现在看到新的稳定1.9存在,可能有什么改变了吗?需要与核心实现相同的人。我执行了到1.9的升级。然后我删除了默认值的内存调整。在上一次尝试中,当A的大小为100个节点,B的大小为1000个节点时,我成功地在两个组A和B之间执行了查询。此查询运行约69042毫秒=>1分9秒。问题仍然存在:为什么我不能对大于100个节点的源组执行查询。
Something like that 
for (i=0; i<200; i++)
{
  query = "start s = node(" + sourceNodeId + "), d = node(" + destinationNodeid + ")  match p = s -[r?*0.." + deep + "]-> d return p"
   RunCypherQuery(query);
}
Error 500 GC overhead limit exceeded
HTTP ERROR 500
Problem accessing /db/data/cypher. 
Reason:
GC overhead limit exceeded</pre></p><h3>Caused by:</h3><pre>java.lang.OutOfMemoryError: GC overhead limit exceeded
    at scala.collection.JavaConversions$.mapAsScalaMap(JavaConversions.scala:488)
    at scala.collection.JavaConverters$$anonfun$mapAsScalaMapConverter$1.apply(JavaConverters.scala:441)
    at scala.collection.JavaConverters$$anonfun$mapAsScalaMapConverter$1.apply(JavaConverters.scala:441)
    at scala.collection.JavaConverters$AsScala.asScala(JavaConverters.scala:80)
    at org.neo4j.cypher.internal.pipes.MutableMaps$.create(Pipe.scala:60)
    at org.neo4j.cypher.internal.pipes.ExecutionContext.newWith(Pipe.scala:136)
    at org.neo4j.cypher.internal.pipes.matching.AddedHistory.toMap(History.scala:75)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.isMatchSoFar(PatternMatcher.scala:166)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.org$neo4j$cypher$internal$pipes$matching$PatternMatcher$$traverseNextNodeFromRelationship(PatternMatcher.scala:98)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher$$anonfun$4.apply(PatternMatcher.scala:150)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher$$anonfun$4.apply(PatternMatcher.scala:150)
    at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:175)
    at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:175)
    at scala.collection.immutable.Stream$Cons.tail(Stream.scala:634)
    at scala.collection.immutable.Stream$Cons.tail(Stream.scala:626)
    at scala.collection.immutable.Stream.foldLeft(Stream.scala:302)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseRelationship(PatternMatcher.scala:150)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextSpecificNode(PatternMatcher.scala:61)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNode(PatternMatcher.scala:72)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextNodeOrYield(PatternMatcher.scala:177)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextSpecificNode(PatternMatcher.scala:60)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNode(PatternMatcher.scala:72)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.foreach(PatternMatcher.scala:36)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.map(PatternMatcher.scala:28)
    at org.neo4j.cypher.internal.pipes.matching.PatterMatchingBuilder.org$neo4j$cypher$internal$pipes$matching$PatterMatchingBuilder$$createPatternMatcher(PatterMatchingBuilder.scala:90)
    at org.neo4j.cypher.internal.pipes.matching.PatterMatchingBuilder$$anonfun$getMatches$1.apply(PatterMatchingBuilder.scala:47)
    at org.neo4j.cypher.internal.pipes.matching.PatterMatchingBuilder$$anonfun$getMatches$1.apply(PatterMatchingBuilder.scala:47)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.yieldThis(PatternMatcher.scala:185)
    at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextNodeOrYield(PatternMatcher.scala:175)
START a=node(*) 
MATCH p=a-[*1..5]->b 
RETURN distinct p
START n=node(1,2,3), m=node(1,2,3)
MATCH n-[?*..4]->()-[r]->m
RETURN DISTINCT r;