neo4j的理解
2015-10-27 11:58
253 查看
1.neo4j的安装
安装前先要装jdk
(1)neo4j-community-2.1.7-unix.tar.gz 解压即用
(2)neo4j-community-2.1.7/bin
修改conf/neo4j-server.properties配置文件,将org.neo4j.server.webserver.address=0.0.0.0注释字符去掉
启动: ./neo4j start
停止: ./neo4j stop
注:启动报错的解决办法:
http://neo4j.com/docs/1.6.2/configuration-linux-notes.html
2.neo4j服务器的配置
http://neo4j.com/docs/stable/server-configuration.html
3.neo4j常用cyhper语句
http://neo4j.com/docs/stable/query-functions-collection.html
4.遇见的常见问题
(1)程序中neo4j read timeout,一条cyhper语句耗时40000多ms,
(2)如何怎样改服务器的配置都不行,因为程序所导入的neo4j-rest-graphdb.jar中程序写死了getTimeout("connect_timeout", 30);
所以只能优化cyhper语句。
5.解决过的复杂cypher:如何查询某个节点下面的所有路径中,每条路径上的最近的渠道节点
start a=node:unique_node(uid={uid}) match p=a-[*]->b wher
4000
e b.isChannel=true return extract(n in nodes(p) | n.uid) as path
结果:
[620806,621744]
[620806,621744,625098]
[620806,621744,625098,667825]
start a=node:unique_node(uid={uid}) match a-[*]->b where b.isChannel=true return b.uid as uid
结果:
[621744,625098,667825]
根据上面两条结果,程序去处理,就能得到想到的结果 621744,思路是:每条路径中不能包括除自己之外的其它渠道结点。
从关系数据库中导入数据到neo4j
(1)先将数据从关系数据库中导出为cvs的格式(2)
(2)新建一个import_cvs.cypher的命令文件
格式如下:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:pmmerinf.csv" AS row
CREATE (:PMMERINF {MERCID:row.MERCID,MERCNAM:row.MERCNAM,MERCNUM:row.MERCNUM,
MERPHONENUMBER:row.MERPHONENUMBER,RECOMMENDATION:row.RECOMMENDATION,NOCARDAGTID:row.NOCARDAGTID});
CREATE INDEX ON :PMMERINF(MERCID);
CREATE INDEX ON :PMMERINF(MERPHONENUMBER);
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:pmmerinf.csv" AS row
MATCH (pmerinf:PMMERINF {MERPHONENUMBER: row.MERPHONENUMBER})
MATCH (recommandtion:PMMERINF {RECOMMENDATION: row.RECOMMENDATION})
MERGE (recommandtion)-[:RECOMMEND]->(pmerinf);
(3)在neo4j-community-2.1.7/bin目录下执行如下命令即可
./neo4j-shell -path graph.db -file import_csv.cypher
安装前先要装jdk
(1)neo4j-community-2.1.7-unix.tar.gz 解压即用
(2)neo4j-community-2.1.7/bin
修改conf/neo4j-server.properties配置文件,将org.neo4j.server.webserver.address=0.0.0.0注释字符去掉
启动: ./neo4j start
停止: ./neo4j stop
注:启动报错的解决办法:
http://neo4j.com/docs/1.6.2/configuration-linux-notes.html
2.neo4j服务器的配置
http://neo4j.com/docs/stable/server-configuration.html
3.neo4j常用cyhper语句
http://neo4j.com/docs/stable/query-functions-collection.html
4.遇见的常见问题
(1)程序中neo4j read timeout,一条cyhper语句耗时40000多ms,
(2)如何怎样改服务器的配置都不行,因为程序所导入的neo4j-rest-graphdb.jar中程序写死了getTimeout("connect_timeout", 30);
所以只能优化cyhper语句。
5.解决过的复杂cypher:如何查询某个节点下面的所有路径中,每条路径上的最近的渠道节点
start a=node:unique_node(uid={uid}) match p=a-[*]->b wher
4000
e b.isChannel=true return extract(n in nodes(p) | n.uid) as path
结果:
[620806,621744]
[620806,621744,625098]
[620806,621744,625098,667825]
start a=node:unique_node(uid={uid}) match a-[*]->b where b.isChannel=true return b.uid as uid
结果:
[621744,625098,667825]
根据上面两条结果,程序去处理,就能得到想到的结果 621744,思路是:每条路径中不能包括除自己之外的其它渠道结点。
从关系数据库中导入数据到neo4j
(1)先将数据从关系数据库中导出为cvs的格式(2)
(2)新建一个import_cvs.cypher的命令文件
格式如下:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:pmmerinf.csv" AS row
CREATE (:PMMERINF {MERCID:row.MERCID,MERCNAM:row.MERCNAM,MERCNUM:row.MERCNUM,
MERPHONENUMBER:row.MERPHONENUMBER,RECOMMENDATION:row.RECOMMENDATION,NOCARDAGTID:row.NOCARDAGTID});
CREATE INDEX ON :PMMERINF(MERCID);
CREATE INDEX ON :PMMERINF(MERPHONENUMBER);
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:pmmerinf.csv" AS row
MATCH (pmerinf:PMMERINF {MERPHONENUMBER: row.MERPHONENUMBER})
MATCH (recommandtion:PMMERINF {RECOMMENDATION: row.RECOMMENDATION})
MERGE (recommandtion)-[:RECOMMEND]->(pmerinf);
(3)在neo4j-community-2.1.7/bin目录下执行如下命令即可
./neo4j-shell -path graph.db -file import_csv.cypher
相关文章推荐
- linux环境 添加新硬盘、分区和挂载
- windbg 调试
- 百度手机卫士,简单粗暴至极(关于Stagefright高危漏洞)
- CentOS 6.5系统安装配置图解教程
- 快速组合排列算法
- java ftp操作
- JNI_OnLoad函数不存在的问题
- UML类图几种关系的总结
- 认识一下WDF
- iPhone设备相关
- 填充磁盘空间的工具和方法
- Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局
- php.ini配置文件详解(为了安全,禁止一些高风险的函数)
- 嵌入式开发人才的未来发展方向
- android技术集合
- iOS中另外一种多线程实现方式NSOperation
- 配置静态文件缓存
- java动态代理(JDK和cglib)
- 技术博客记录
- 你的阅读造就了你 You are what you read