Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使所有节点连接到Neo4j浏览器中的给定节点导致Neo4j崩溃_Neo4j_Cypher - Fatal编程技术网

使所有节点连接到Neo4j浏览器中的给定节点导致Neo4j崩溃

使所有节点连接到Neo4j浏览器中的给定节点导致Neo4j崩溃,neo4j,cypher,Neo4j,Cypher,我有一个有无数个节点的图。其中,有一个特定的感兴趣节点。我想让所有节点以任何关系和任何关系深度连接到该节点(也就是说,它可能通过其他几个节点连接到原始节点)。我使用其id属性查询节点,并扩展其所有相邻节点。该图如下所示,其中突出显示/单击了感兴趣的节点: 我尝试了以下查询以获取所有这些节点: MATCH (a {id :"8e5b90c5242f4382bd8e71ae901b0433"}) CALL apoc.path.expandConfig(a, { uniqueness: 'NO

我有一个有无数个节点的图。其中,有一个特定的感兴趣节点。我想让所有节点以任何关系和任何关系深度连接到该节点(也就是说,它可能通过其他几个节点连接到原始节点)。我使用其
id
属性查询节点,并扩展其所有相邻节点。该图如下所示,其中突出显示/单击了感兴趣的节点:

我尝试了以下查询以获取所有这些节点:

MATCH (a {id :"8e5b90c5242f4382bd8e71ae901b0433"})
CALL apoc.path.expandConfig(a, 
{
  uniqueness: 'NODE_PATH'
}) yield path
return path

但这使得neo4j占用了RAM的千兆位,而我只有4GB。查询将挂起pc,并且永远不会完成。cypher有什么问题?

您可能需要使用
apoc.path.subgraphNodes()
,它“扩展到子图的节点”,这正是您想要的


请参见,此功能已添加。

是的,似乎可以使用。一个问题:为什么
收益节点返回节点
有效,而
收益节点返回节点
无效。在
关系
关系
的情况下也是如此。是
节点
关系
关键字吗?@Mahesha999否,此处不涉及关键字。大多数APOC的命名约定是在生成列表时使用复数变量名,在生成单数实体时使用单数变量名,尽管这是基于每行的
apoc.path.subgraphNodes()
生成一个节点流,它变成行,但每行只有一个节点。如果我们决定返回一个节点列表,那么我们将使用
YIELD nodes
@InverseFalcon,我的同事今天面临着完全相同的问题。告诉他使用
子图形节点
。他问到底有什么区别。但我说不出来。
expandConfig()
子图形节点()
在实现上的确切区别是什么。为什么
expandConfig()
会导致(接近)无限图遍历,而
子图节点()
会按预期终止?@Mahesha999区别在于配置参数中的
唯一性
属性,特别是
节点_全局
唯一性,这将确保在扩展处理期间只能访问一次节点(始终是与起始节点的最小距离)。您可以使用
expandConfig()
显式设置,但这不是默认设置。默认情况下,我们在
subgraphNodes()
subgraphhall()
、和
spanningTree()
中使用
NODE>。基本上,这种唯一性模式大大减少了可能的扩展,当您只需要连接的节点,而不是所有可能的路径时,这是非常好的。了解这种特定扩展的实际功能非常重要。因为您使用的是节点路径唯一性,这里唯一的限制是同一节点在给定路径中不能出现多次。但此扩展仍将尝试扩展到图形中所有可能的唯一路径。不是所有可能的关系,所有可能的路径,任何长度。即使在这样一个简单的图中,路径的数量也是惊人的,您甚至不需要这些路径,因为您只需要节点。这些路径将在很长一段时间内反复遍历相同的节点和关系。路径
(a)-[]->(b)
是否被视为不同于
(a)-[]->(b)-[]->(a)
?如果是,这是否意味着任何带有循环的图都会导致无限多条路径?是的,这是两条不同的路径。Cypher扩展中的默认唯一性将找到耗尽所有关系的所有可能路径(受模式中关系的类型和方向限制)。由于默认情况下每个关系只遍历一次,因此当存在循环时,不会得到无限循环或无限数量的路径。节点路径唯一性会更好一些,因为节点不能在每个单独的路径中重用,所以不会考虑第二条路径。