Neo4j 获取大型图中特定路径的开始和结束节点
我有一个大型图(1068029个节点和2602897个关系),我通过python API使用它,并在程序流中对该图发出请求 我有以下疑问- 第一个问题 第二个问题 当我尝试使用75000大小的id_列表执行第一个查询时,它通过OK并返回想要的输出,但是当我尝试执行第二个查询时,图形会卡住,即使我将id_列表减少到20000 id_列表甚至比75000还要大,但我将其分为多个块以加快图形的响应时间,但是如果我将其分为太多的块,我将增加对图形的请求数量,并增加程序运行时间 我的问题是——是否有某种库函数(APOC或类似的函数)执行相同的操作,但时间更短?或者,您有另一种解决方案,可以在不将id_列表减少到50000以下的情况下解决此问题Neo4j 获取大型图中特定路径的开始和结束节点,neo4j,cypher,Neo4j,Cypher,我有一个大型图(1068029个节点和2602897个关系),我通过python API使用它,并在程序流中对该图发出请求 我有以下疑问- 第一个问题 第二个问题 当我尝试使用75000大小的id_列表执行第一个查询时,它通过OK并返回想要的输出,但是当我尝试执行第二个查询时,图形会卡住,即使我将id_列表减少到20000 id_列表甚至比75000还要大,但我将其分为多个块以加快图形的响应时间,但是如果我将其分为太多的块,我将增加对图形的请求数量,并增加程序运行时间 我的问题是——是否有某种库
匹配模式中的(start\u节点)
应指定一个标签(如(start\u节点:Foo)
),以避免必须扫描数据库中的每个节点。此外,还应为该开始节点创建一个(或唯一性约束)
模式中的所有关系匹配方向关系。也就是说,在两端各放一个箭头
()-[:BAR]->()
),这样查询就不会被迫计算所有关系类型MATCH
(start_node)--(o:observed_data)--(i:indicator)--(m:malware)--(end_node:attack_pattern)
WHERE start_node.id in [id_list]
RETURN start_node.id, end_node.name
MATCH
(start_node)--(o1:observed_data)--(h:MD5)--(o2:observed_data)--(i:indicator)--(m:malware)--(end_node:attack_pattern)
WHERE start_node.id in [id_list]
RETURN start_node.id, end_node.name