如果您install Neo4j Graph Data Science(GDS)插件,则可以使用社区检测算法。特别是,Weakly Connected Components(WCC)算法将对您的用例非常有用。以下是其文档中的一个片段: 弱连通分量(WCC)算法在有向图和无向图中找到连通节点的集合。如果两个节点之间存在路径,则它们是连接的。彼此连接的所有节点的集合形成组件。与强连通分量(SCC)相比,不考虑两个节点之间的路径上的关系的方向。 例如,如果你只关心Img节点(具有name属性)和DISTANCE关系,你可以这样做:
// Create an in-memory GDS projection for the Img nodes and DISTANCE relationships
CALL gds.graph.project('imgs', 'Img', 'DISTANCE') YIELD graphName
// Run WCC algorithm to find each "component", in which every pair of nodes is connected by some path (ignoring directionality)
CALL gds.wcc.stream('imgs', {}) YIELD nodeId, componentId
// For each component, collect a list of the names of all nodes in that component
WITH componentId, COLLECT(gds.util.asNode(nodeId).name) AS names
// Collect all those lists into an outer list (this is the result you asked for)
RETURN COLLECT(names) AS result
1条答案
按热度按时间w41d8nur1#
如果您install Neo4j Graph Data Science(GDS)插件,则可以使用社区检测算法。特别是,Weakly Connected Components(WCC)算法将对您的用例非常有用。以下是其文档中的一个片段:
弱连通分量(WCC)算法在有向图和无向图中找到连通节点的集合。如果两个节点之间存在路径,则它们是连接的。彼此连接的所有节点的集合形成组件。与强连通分量(SCC)相比,不考虑两个节点之间的路径上的关系的方向。
例如,如果你只关心
Img
节点(具有name
属性)和DISTANCE
关系,你可以这样做:GDS投影将继续占用服务器上的内存,直到您删除投影或重新启动neo4j。要删除名为“imgs”的投影,请执行以下操作:
上面的内容仅仅触及了GDS的表面,但应该给予您实现用例的帮助。