我使用Neo4j 2.1.7和Node.js来构建REST API。数据 - 大约70,000个节点和100.000个关系 - 包含很多小的连接子图。用Neo4j + Cypher查找节点及其连接的子图
一个API调用(例如localhost:8000/search?name=Bussum
)应返回名为Bussum
的所有节点及其所属的连接组件。
插图:
(图片来自Wikipedia)
我可以得到所有我需要这样的查询数据:
MATCH (a {name: "Bussum" })-[r*]-(b)
UNWIND rels AS rel
RETURN distinct startNode(rel) AS a, type(rel), endNode(rel) AS b
但是这样的会查询仅返回全部三元组(a)-[r]-(b)
(未按组件分组/子)。当然,我可以在Node.js中重新构建图形并自己查找子图,但这根本不像是最好的解决方案。是否有可能将返回的数据分组在一个数组/子图/组件集合中?哪些Cypher查询可以更好地匹配我的用例?或者我应该考虑使用Neo4j Java API呢?
谢谢! Bert
子图是多么“小”?图中的那些代表最小到最大? – 2015-02-23 15:24:24
一些包含一个顶点,大约100个,但大多数在5和10之间。 – Bert 2015-02-23 16:04:45
做每个特定子图中的节点是否具有该子图的唯一标识符? – 2015-02-23 16:07:43