Neo4j-APOC扩展与使用(下)

简介: Neo4j-APOC扩展与使用1.APOC简介与安装1.1 APOC简介1.2安装APOC

2.APOC使用案例

2.1 APOC帮助命令。

查看apoc支持过程和函数:

call apoc.help('apoc')

返回值为apoc支持的过程,函数等,由于返回值较长,此处列出一条返回结果,为便于分析返回结果,将返回结果进行人工分行。

"procedure" 
"apoc.algo.aStar"
"apoc.algo.aStar(startNode, endNode, 'KNOWS|<WORKS_WITH|IS_MANAGER_OF>', 'distance','lat','lon') YIELD path, weight - run A* with relationship property name as cost function"
"apoc.algo.aStar(startNode :: NODE?, endNode :: NODE?, relationshipTypesAndDirections :: STRING?, weightPropertyName :: STRING?, latPropertyName :: STRING?, lonPropertyName :: STRING?) :: (path :: PATH?, weight :: FLOAT?)"
null
null

第1行的procedure表示类型为过程;

第2行的apoc.algo.aStar表示过程的名称;

第3行表示该过程的一个应用案例;

第4行为过程的签名信息,签名的一般形式是 name : : TYPE。在调用过程或函数时,通过签名可以获得对应参数的名称、类型及位置,同时还可获悉返回值列的名称和类型。

查看APOC支持的过程和函数数量:

CALL dbms.functions() YIELD name WHERE name STARTS WITH 'apoc.' RETURN COUNT(name)
UNION
CALL dbms.procedures() YIELD name WHERE name STARTS WITH 'apoc.' RETURN COUNT(name)

返回值为:

│"COUNT(name)"│

│246 │

│294 │

表示目前3.5.0.11版本的APOC包含了246个函数和294个过程,这个数量已经超过了APOC开发之初定下目标(365个过程或函数)。

2.2APOC生成随机图。

本部分操作先删除图中的所有节点和关系,代码如下:

MATCH (n) DETACH DELETE n

基于APOC生成随机图,代码如下:

CALL apoc.generate.ba(10,2,'Person','朋友')

查看所有路径,代码如下:

MATCH p = (n)-[r]-(m) RETURN p

返回结果如图2-1所示:



CALL apoc.generate.ba(10,2,‘Person’,‘朋友’)中的ba表示Barabási–Albert模型,ba模型可以产生随机的算法无标度网络。

2.3 实现PageRank算法。

本部分操作先删除图中的所有节点和关系,代码如下:

MATCH (n) DETACH DELETE n

PageRank算法在Google的搜索引擎中用于计算网站的排名,PageRank的规则是:关系越多和与重要节点的关系越多,那么该节点就越重要。

首先创建1000个节点:

FOREACH (id In range(1,1000) | CREATE (n:NodeLabel{id:id}))

再创建100万个关系:

MATCH (n1:NodeLabel),(n2:NodeLabel) WITH n1,n2 LIMIT 1000000 WHERE rand()<0.1 
CREATE (n1)-[:REL_TYPE]->(n2)

调用PageRank算法计算NodeLabel节点中的重要性排名,代码如下:

MATCH (n:NodeLabel) WITH collect(n) AS ns
CALL apoc.algo.pageRank(ns) YIELD node,score
RETURN node,score
ORDER BY score DESC LIMIT 10

这行代码建议添加LIMIT 10,否则会出现返回值计算时间过长的情况。返回结果如图1-2,从图中可以看出id为185的节点关系很多,将上面代码中的LIMIT 10 修改为LIMIT 1 ,返回值为 id为185的节点。


图1-2 APOC pageRank算法返回结果

选择展示为Text,可以查看到pageRank算法计算得分的返回结果:

│"node" │"score"│

│{“id”:185}│1.18105│

│{“id”:345}│1.17249│

│{“id”:534}│1.16887│

│{“id”:239}│1.16823│

│{“id”:71} │1.14628│

│{“id”:484}│1.14145│

│{“id”:444}│1.13305│

│{“id”:661}│1.13231│

│{“id”:131}│1.13008│

│{“id”:314}│1.12901│

2.4 APOC函数使用。

APOC的函数使用与Cypher的内置函数使用基本一致,下面基于APOC完成一个均值计算,代码如下:

RETURN apoc.coll.avg([1,2,3,4,5]) AS output

apoc.coll.avg()为APOC提供的函数,在使用过程中,只需要将参数放如函数中,即可返回对应的返回值,返回值为:

│"output"│

│3.0 │

基于APOC完成数据类型转换为字符串的操作,代码如下:

RETURN  apoc.convert.toStringList([1, "2", 3, "Four"]) AS output
• 1

返回值为:

│"output" │

│[“1”,“2”,“3”,“Four”]│

返回值中,1也用双引号包裹起来,表明其数据类型的字符串。

3 APOC总结

以上讲述了APOC的安装与基本使用,相关操作,可以查询官网。

相关文章
|
Java
neo4j添加双向关系如何操作
neo4j添加双向关系如何操作
673 5
|
算法 Serverless
Neo4j支持模糊匹配吗
Neo4j支持模糊匹配吗
672 6
|
JavaScript 前端开发 API
论 Suspense 组件在 Vue 3 中的重要性
论 Suspense 组件在 Vue 3 中的重要性
488 121
|
11月前
|
存储 分布式计算 DataWorks
阿里云助力富友数据中台革新,创新引擎赋能商户数字化经营
在电子商务和跨境交易蓬勃发展的背景下,第三方支付行业迎来爆发式增长,但也面临数据量激增、实时性瓶颈、高并发压力及成本效率失衡等挑战。富友支付通过引入MaxCompute、Hologres和DataWorks等技术,重构新一代数据仓库体系,实现高性能、高稳定性和降本增效,助力商户数字化经营,推动支付行业生态的可持续发展。
|
JavaScript BI
基于jeecg-boot集成luckysheet记录
基于jeecg-boot集成luckysheet记录
306 0
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
32223 0
|
算法 数据可视化 定位技术
QGIS+Conda+jupyter玩转Python GIS
QGIS+Conda+jupyter玩转Python GIS
574 1
|
存储 机器学习/深度学习 自然语言处理
LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefix tuing等]
LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefix tuing等]
LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefix tuing等]