Neo4j【环境部署 03】插件APOC和ALGO配置使用实例分享(网盘分享3.5.5兼容版本插件)
由于 JDK 版本限制安装的 Neo4j 的版本为 3.5.5
以下插件的使用都是基于这个版本的。Neo4j 及插件网盘分享:
通过网盘分享的文件:CSDN_Neo4j
链接: https://pan.baidu.com/s/107wQYy34OrjkxMUe-jGEVA?pwd=cyni 提取码: cyni
分享文件列表:
- apoc-3.5.0.15-all.jar
- graph-algorithms-algo-3.5.4.0.jar
- neo4j-community-3.5.5-unix.tar.gz
插件APOC和ALGO配置使用实例
- 1.APOC
- 1.1 下载
- 1.2 配置
- 1.3 简单实例
- 2.ALGO
- 2.1 下载
- 2.2 配置
- 3.总结
1.APOC
【讯飞星火】Neo4j的APOC插件是一个强大的工具,它扩展了Cypher查询语言的功能,提供了许多内置过程和函数,用于完成数据集成、图形算法或数据转换等领域的不同任务。以下是一些常见的使用场景和相应的Cypher查询示例:
- 文本相似度计算:使用
apoc.text.distance
函数计算两个字符串之间的Levenshtein距离。例如,比较节点属性name
与字符串"周"的相似度。 - 图算法:使用APOC提供的图算法过程,如
apoc.algo.pageRank
进行PageRank计算,apoc.algo.betweennessCentrality
计算中介中心性等。 - 数据导入导出:使用APOC的过程从CSV文件导入数据到Neo4j数据库,或将数据从Neo4j导出到CSV文件。
- 网络分析:使用APOC的过程进行网络分析,如
apoc.algo.centrality
计算中心性指标,apoc.algo.clusteringCoefficient
计算聚类系数等。 - 路径查找:使用APOC的过程进行复杂的路径查找,如
apoc.path.expandConfig
根据配置展开路径,apoc.path.expand
根据关系类型展开路径等。 - 数据转换:使用APOC的过程将数据从一种格式转换为另一种格式,如将JSON字符串转换为Map对象,将Map对象转换为JSON字符串等。
- 图可视化:使用APOC的过程生成图的可视化表示,如
apoc.graphviz.graphviz
生成Graphviz格式的图表示,apoc.graphviz.dot
生成DOT格式的图表示等。 - 机器学习:使用APOC的过程进行机器学习任务,如
apoc.ml.corex
进行Corex聚类,apoc.ml.knn
进行K近邻分类等。
1.1 下载
下载地址:https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases,下载版本对照:
本次下载的文件为:apoc-3.5.0.15-all.jar
。
1.2 配置
将下载的 jar包放置于plugins
文件夹下,修改配置文件 conf/neo4j.conf
添加以下内容:
# A comma separated list of procedures and user defined functions that are allowed
# full access to the database through unsupported/insecure internal APIs.
#dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.*
# A comma separated list of procedures to be loaded by default.
# Leaving this unconfigured will load all procedures found.
#dbms.security.procedures.whitelist=apoc.coll.*,apoc.load.*
dbms.security.procedures.unrestricted=apoc.*
# 白名单可以不配置
dbms.security.procedures.whitelist=apoc.*
修改配置文件后重启 Neo4j,然后验证是否安装成功:
RETURN apoc.version()
// 返回结果
apoc.version()
"3.5.0.15"
// 获取函数列表
CALL apoc.help('')
1.3 简单实例
MATCH (n)
WITH n, apoc.text.levenshteinDistance(n.name, '周王丽') AS dist
ORDER BY dist ASC
RETURN n.name, dist
对于较短的文本,编辑距离的意义不大。
使用编辑距离计算相似度(这种相似度并非语义相似度)。
MATCH ( i1 : information ) WITH i1
MATCH ( i2 : information ) WHERE i1 <> i2 WITH i1, i2
RETURN i1.name AS from, i2.name AS to,
apoc.math.round((1- apoc.text.levenshteinDistance(i1.content, i2.content)*1.0/apoc.coll.max([size(i1.content) ,size(i2.content)]))*100 ,2) AS similarity
ORDER BY similarity desc
2.ALGO
【讯飞星火】Neo4j的algo插件是一个强大的工具,它提供了多种图形算法和统计过程,用于分析图数据。这些算法可以帮助你识别图中的模式、计算路径、进行社区检测等。以下是一些常见的使用场景和相应的Cypher查询示例:
- 最短路径算法:用于查找两个节点之间的最短路径。例如,使用Dijkstra算法找到节点A到节点B的最短路径。
- 中心性算法:用于评估节点在图中的重要性。例如,使用Closeness Centrality计算每个节点的中心性得分。
- 社区检测算法:用于发现图中的社区结构。例如,使用Label Propagation算法检测社区。
- 链接预测算法:用于预测节点之间可能存在的关系。例如,使用Katz算法预测两个节点之间的潜在关系。
- 节点相似度算法:用于计算节点之间的相似度。例如,使用Cosine相似度计算两个节点的相似度。
- 图匹配算法:用于在图中查找特定的子图结构。例如,使用VF2算法查找特定的子图模式。
- 聚类算法:用于对节点进行聚类。例如,使用K-Means算法对节点进行聚类。
- 降维算法:用于减少数据的维度。例如,使用PCA算法对节点属性进行降维。
2.1 下载
下载地址:https://github.com/neo4j-contrib/neo4j-graph-algorithms/releases,ALGO 没有版本对照,查看 GDS 的下载版本对照:
里边有历史版本的对照关系:Graph algorithms 3.5.14.0 is only compatible with Neo4j 3.5.9 and above. 本次下载文件为graph-algorithms-algo-3.5.4.0.jar
。
2.2 配置
将下载的 jar包放置于plugins
文件夹下,修改配置文件 conf/neo4j.conf
如下:
dbms.security.procedures.unrestricted=algo.*,apoc.*
dbms.security.procedures.whitelist=algo.*,apoc.*
修改配置文件后重启 Neo4j,然后验证是否安装成功:
RETURN algo.version()
// 返回结果
algo.version()
"3.5.5"
// 查询函数列表
CALL algo.list()
3.总结
有了这些插件,一些复杂的业务就可以通过调用函数实现了。