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的安装与基本使用,相关操作,可以查询官网。

相关文章
|
2月前
|
存储 NoSQL 关系型数据库
|
12月前
|
SQL NoSQL 算法
Neo4j极简教程
图数据库是NoSQL类数据库的一大典型代表,在国内图数据库属于新兴事物,其优异的复杂关系解决方案引起了国内众多大型互联网公司及IT开发者的关注,而Neo4j是目前图形化数据库中最为出色、最为成熟的产品。
636 0
Neo4j极简教程
|
机器学习/深度学习 SQL 数据库
NEO4J的入门和一些简单的操作
> 持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,[点击查看活动详情](https://juejin.cn/post/7147654075599978532 "https://juejin.cn/post/7147654075599978532") # 引言 今天我们继续学习NEO4J. # 创建 创建语句我们一般会使用create指令 我们首先在控制台上输入`neo4j.bat console`启动neo4j 然后打开你的浏览器,然后在浏览器地址栏中输入 `http://localhost:7687 - Neo4j Browser](http:
|
数据库 数据库管理
Neo4j语法1
Neo4j语法
96 0
Neo4j语法2
Neo4j语法
64 0
|
NoSQL 数据可视化 Java
我的Neo4j探索之旅 - 初识Neo4j(一)
neo4j 这个东西在国内用的很少,目前能百度的资料也是很早之前的几篇了,我针对neo4j 3.5 的版本进行一次学习和记录,以及实际的工作需求我也遇到了,后续会开源一个剔除业务的开源项目,有兴趣的读者可以了解一下图数据库的中间件,还是蛮有意思的。
263 0
|
存储 SQL 算法
MySQL引擎层的内部API是干什么的?底层原理是什么?
MySQL引擎层的内部API是干什么的?底层原理是什么?
105 0
|
XML JSON 算法
Neo4j-APOC扩展与使用(上)
Neo4j-APOC扩展与使用 1.APOC简介与安装 1.1 APOC简介 1.2安装APOC
Neo4j-APOC扩展与使用(上)
|
存储 缓存 NoSQL
Neo4J 2|学习笔记
快速学习 Neo4J 2
330 0
Neo4J 2|学习笔记
|
SQL NoSQL Oracle
Neo4J 介绍及安装|学习笔记
快速学习 Neo4J 介绍及安装
522 0
Neo4J 介绍及安装|学习笔记

相关实验场景

更多