neo4j有很多的图算法,现在统一称为graph data science,可以作为插件注册到本地实例当中,其官网有具体的安装方法。
网络上有大量的关于如何使用图算法的例子,但是没有如何基于图算法分析自己数据库的方法。在此记录一下学习过程。
1.使用图算法的前提条件
图算法其实就是针对图进行计算,常见的例如中心度分析、紧密度分析、聚类等等。目前很多的软件可以也用来做网络分析,例如graphi、cytoscape等等。在neo4j里面,在应用图算法之前需要先定义出一个图,可以创建一个图,也可以把当前的数据库实例中的部分或者整体作为映射,创建出一个图,同时元数据结构不会改变。
因此,在这里我们首先映射数据库实例到图里面。
代码1:单节点映射
CALL gds.graph.create('my-graph', 'Person', '*')
YIELD graphName, nodeCount, relationshipCount;
参数1:你想定义的图名称
参数2:你想计算的节点的标签
代码2:多节点映射
CALL gds.graph.create('my-graph', ['节点标签名1', '节点标签名2'], '*')
YIELD graphName, nodeCount, relationshipCount;
参数1:同上
参数2,3:同上
结果
3.全部节点映射
代码:
CALL gds.graph.create('my-graph', '*', '*')
YIELD graphName, nodeCount, relationshipCount;
2.使用图算法
使用算法:网页节点重要性计算pageRank
算法简述:返回一系列的计算值,值越大的说明该节点越重要。基本思想就是入度越大的节点越重要。
代码
CALL gds.pageRank.stream('all-graph', { nodeLabels: ['Cell_A'] }) YIELD nodeId, score
该结果表明,节点4最重要