我对将Neo4j客户端用于Java提出了疑问。我有一个约有120.000.000节点和1.000.000.000边的图。我想从该图中提取子图(平均大小约为500个节点)。为此,我在节点的ID字段上创建了一个索引。查询看起来像这样
MATCH (a:XXX:YYYY)
WHERE a.uid IN [9999, 5555, 7777, 99999, ...]
RETURN a AS blablubb
此刻,我正在通过第二个看起来像这样的查询来寻找边缘
MATCH (a::XXX:YYYY)-[r:ZZZZ]-(b::XXX:YYYY)
WHERE a.uid IN [9999, 5555, 7777, 99999, ...]
AND b.uid IN [9999, 5555, 7777, 99999, ...]
这非常非常慢,尤其是当子图变大时。我现在的问题是如何连接两个查询以同时获取子图的边和节点。我知道有一个更快的解决方案,因为Neo4j浏览器为我提供了[]的可视化
MATCH (a:XXX:YYYY)
WHERE a.uid IN [9999, 5555, 7777, 99999, ...]
RETURN a AS blablubb
包含所有边缘。
非常感谢您的帮助
我对将Neo4j客户端用于Java提出了疑问。我有一个约有120.000.000节点和1.000.000.000边的图。我想从这张图中提取子图(平均大小约为...
浏览器使用返回的节点的节点ID进行后续查询,并获取它们之间的所有关系。该查询在neo4j查询日志中看起来像这样。
MATCH (a)-[r]->(b)
WHERE id(a) IN $existingNodeIds
AND id(b) IN $newNodeIds
RETURN r;