赞
踩
Neo4j提供了两个常用的算法库-----apoc和algo,相对于algo,apoc不仅仅提供了一些算法实现,还提供了数据导入等功能,更多地像一个工具包。而在算法实现方面,algo显得更专业、全面。本文主要介绍algo库的使用,后续再记录apoc的使用。algo的详细使用文档,请点击这里。另外所有关于Neo4j的操作都是基于Linux系统。
图算法用于计算图形,节点或关系的度量,Neo4j支持的图算法如下:
中心度算法(Centralities):
(1)PageRank (页面排名)
(2)ArticleRank
(3)Betweenness Centrality (中介中心度)
(4)Closeness Centrality (接近中心度)
(5)Harmonic Centrality
社区检测算法(Community detection):
(1)Louvain (鲁汶算法)
(2)Label Propagation (标签传播)
(3)Connected Components (连通组件)
(4)Strongly Connected Components (强连通组件)
(5)Triangle Counting / Clustering Coefficient (三角计数/聚类系数)
路径搜索算法(Path finding):
(1)Minimum Weight Spanning Tree (最小权重生成树)
(2)Shortest Path (最短路径)
(3)Single Source Shortest Path (单源最短路径)
(4)All Pairs Shortest Path (全顶点对最短路径)
(5)A*
(6)Yen’s K-shortest paths
(7)Random Walk (随机漫步)
相似性算法(Similarity):
(1)Jaccard Similarity (Jaccard相似度)
(2)Cosine Similarity (余弦相似度)
(3)Pearson Similarity (Pearson相似度)
(4)Euclidean Distance (欧氏距离)
(5)Overlap Similarity (重叠相似度)
链接预测(Link Prediction):
(1)Adamic Adar
(2)Common Neighbors
(3)Preferential Attachment
(4)Resource Allocation
(5)Same Community
(6)Total Neighbors
预处理算法(Preprocessing):
(1)One Hot Encoding
Neo4j的算法库是以jar包的形式提供给用户的,安装包里并没有提供,安装完毕以后用户可以按照过程调用,使用的时候可以在github上下载与自己的Neo4j版本相匹配的jar包,例如最新的 graph-algorithms-algo-3.5.3.1.jar。具体操作步骤如下:
(1)下载相匹配的jar包。
(2)把jar包放在Neo4j根目录下的plugins目录下。
(3)修改 conf目录下的配置文件 neo4j.conf 中的配置项:
dbms.security.procedures.unrestricted=algo.*
(4)重启Neo4j:./bin/neo4j restart 。
(5)运行下面程序,应该就可以看到支持的算法列表了。
CALL algo.list()
最后给一个小tips,关于Neo4j如何指定jdk版本的问题。Neo4j要求使用的jdk版本是1.8,在使用的时候,可能不想配置jdk全局环境变量,但是在conf文件中又没有给出配置JAVA_HOME的选项(我没看到,如果有找到的同学,也告诉我下),这时可以在shell脚本中单独引入JAVA_HOME环境变量,比如在 bin 目录下的 neo4j文件中第一句代码的前面添加 JAVA_HOME,不过有一点比较麻烦的是,任何用到的shell脚本都必须添加这句,比如bin目录下的其他脚本。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。