此博客用来备份项目中用到的neo4j。
调用方法:
public List<OecBocAnalysis> searchRelevanceRelation2(String startTime, String endTime, String firmName,
String selectNum, String searchRelate){
BaseBoltNeoDao dao = new BaseBoltNeoDao("bolt://10.10.90.25:7687", "neo4j", "123456");
List<OecBocAnalysis> resultlist=new ArrayList<OecBocAnalysis>();
String searchRelateStr="";//关系
if (searchRelate != null && !searchRelate.equals("")&&!searchRelate.equals("全部")) {
String[] relatelist=searchRelate.split(",");
for(String str:relatelist){
searchRelateStr+=str+"|";
}
searchRelateStr=searchRelateStr.substring(0,searchRelateStr.length()-1);
}
NeoNode startNode = new NeoNode();
startNode.getLabels().add("Company");
startNode.getProperties().put("name", firmName);
NeoNode endNode = new NeoNode();
NeoRelation relation = new NeoRelation();
relation.setRelType(searchRelateStr);
List<NeoResult> results = dao.queryNeoResults(startNode, relation,
endNode,Integer.parseInt(selectNum), RelationQueryDirection.OUT);
for (NeoResult neoResult : results) {
OecBocAnalysis sis=new OecBocAnalysis();
sis.setCompany_one(neoResult.getStartNode().getProperties().get("name").toString());
sis.setCompany_two(neoResult.getEndNode().getProperties().get("name").toString());
sis.setName(neoResult.getRelation().getRelType());
sis.setNominal_one(neoResult.getStartNode().getProperties().get("nominal").toString());
sis.setNominal_two(neoResult.getEndNode().getProperties().get("nominal").toString());
sis.setRelate_table_name(neoResult.getRelation().getProperties().get("relate_table_name").toString());
sis.setMatch_content("");
sis.setSearched(false);
sis.setCorpus_id(neoResult.getRelation().getProperties().get("corpus_id").toString());
sis.setId(neoResult.getRelation().getProperties().get("source_id").toString());
resultlist.add(sis);
}
return resultlist;
}
neo4j工具类:
package com.xiaochen.neo4j;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.neo4j.driver.v1.Record;
import com.dinfo.oec.neo4j.bean.NeoNode;
import com.dinfo.oec.neo4j.bean.NeoRelation;
import com.dinfo.oec.neo4j.bean.NeoResult;
import com.dinfo.oec.neo4j.dao.BaseBoltNeoDao;
import com.dinfo.oec.neo4j.dao.BaseBoltNeoDao.RelationQueryDirection;
public class BaseNeoDaoUtils {
private BaseBoltNeoDao dao = null;
@Before
public void init() {
dao = new BaseBoltNeoDao("bolt://10.10.90.25:7687", "neo4j", "123456");
}
public void execute() {
List<Record> records = dao.execute("MATCH (n) RETURN distinct(labels(n)) AS labels");
for (Record record : records) {
System.out.println(record);
}
}
// ---------Node-------------start
public void addNode() {
NeoNode neoNode = new NeoNode();
neoNode.setLabels(Arrays.asList(new String[] { "test" }));
neoNode.getProperties().put("name", "node5");
dao.addNeoNode(neoNode);
}
public void delteNode() {
NeoNode neoNode = new NeoNode();
neoNode.getProperties().put("name", "node1");
System.out.println(dao.deleteNeoNodes(neoNode, true));
}
public void updateNode() {
NeoNode neoNode = new NeoNode();
neoNode.setLabels(Arrays.asList(new String[] { "test" }));
neoNode.getProperties().put("name", "node1");
Map<String, Object> params = new HashMap<String, Object>();
params.put("age", 30);
System.out.println(dao.updateNeoNodes(neoNode, params));
}
public void queryNodeByIds() {
System.out.println(dao.queryNeoNodes(Arrays
.asList(new Long[] { 2857808L })));
}
public void queryNodes() {
NeoNode neoNode = new NeoNode();
neoNode.getProperties().put("name", "node2");
System.out.println(dao.queryNeoNodes(neoNode));
}
// ---------Node-------------end
// ---------Relation---------start
public void addRelation() {
NeoNode startNode = new NeoNode();
startNode.getLabels().add("test");
startNode.getProperties().put("name", "node5");
NeoNode endNode = new NeoNode();
endNode.getLabels().add("test");
endNode.getProperties().put("name", "node1");
NeoRelation relation = new NeoRelation();
relation.setRelType("type5_1");
System.out.println(dao.addRelation(startNode, relation, endNode));
}
public void mergeRelation() {
NeoNode startNode = new NeoNode();
// startNode.getLabels().add("test");
startNode.getProperties().put("name", "node1");
NeoNode endNode = new NeoNode();
// endNode.getLabels().add("test");
endNode.getProperties().put("name", "node2");
NeoRelation relation = new NeoRelation();
relation.setRelType("bigger");
relation.getProperties().put("age", 10);
relation.getProperties().put("sex", "��");
System.out.println(dao.mergeRelation(startNode, relation, endNode));
}
public void updateRelation() {
NeoNode startNode = new NeoNode();
startNode.getLabels().add("test");
startNode.getProperties().put("name", "node1");
NeoNode endNode = new NeoNode();
endNode.getLabels().add("test");
endNode.getProperties().put("name", "node2");
NeoRelation relation = new NeoRelation();
relation.setRelType("bigger");
relation.getProperties().put("age", 20);
Map<String, Object> params = new HashMap<String, Object>();
params.put("country", "������");
params.put("values", Arrays.asList(new Integer[] { 1, 2, 4 }));
System.out.println(dao.updateRelation(startNode, relation, endNode,
params));
}
@Test
public void queryNeoResults() {
NeoNode startNode = new NeoNode();
startNode.getProperties().put("name", "成都市新筑路桥机械股份有限公司");
NeoNode endNode = new NeoNode();
NeoRelation relation = new NeoRelation();
// relation.setRelType("旗下|收购");
List<NeoResult> results = dao.queryNeoResults(startNode, relation,
endNode, 1, RelationQueryDirection.OUT);
for (NeoResult neoResult : results) {
System.out.print(neoResult.getStartNode().getProperties().get("name")+":");
System.out.print(neoResult.getRelation().getRelType()+":");
System.out.println(neoResult.getEndNode().getProperties().get("name"));
}
}
// ---------Relation---------end
//----------labels--------------start
@Test
public void queryLables(){
System.out.println(dao.queryLables());
}
//----------labels--------------end
}
分享到:
相关推荐
基于neo4j搭建金融风控图谱.rar基于neo4j搭建金融风控图谱.rar基于neo4j搭建金融风控图谱.rar基于neo4j搭建金融风控图谱.rar基于neo4j搭建金融风控图谱.rar基于neo4j搭建金融风控图谱.rar基于neo4j搭建金融风控图谱....
在当前大数据行业中,随着算法的升级,特别是机器学习的加入,“找规律”式的算法所带来的“红利”正在逐渐地消失,进而需要一种可以对数据进行更深一层挖掘的方式,这种新的方式就是知识图谱。知识图谱(Knowledge...
2. 查询引擎:系统应包含一个智能查询引擎,它根据用户输入的问题,使用Cypher查询语句在图谱中寻找最匹配的答案。可能涉及到路径搜索、节点属性匹配等多种策略。 3. 用户接口:提供一个用户友好的界面,允许用户...
毕业设计 基于Python知识图谱(Neo4j)的可视化高考志愿填报信息平台源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python知识图谱(Neo4j)的可视化高考志愿填报信息平台源码+详细文档+全部数据资料(高分...
知识图谱+neo4j+apoc的plugin,对应neo4j 5.21.0
在本项目中,我们主要关注的是使用Spring-boot框架与Neo4j数据库来构建一个课程知识图谱,并且实现基于知识图谱的课程问答系统(KBQA)以及课程信息的查询和可视化。以下是对这些关键知识点的详细解释: 1. **...
【描述】: "基于neo4j的简易医疗问答知识图谱,数据从ask120中爬取得到" ask120是一个医疗问答平台,它积累了大量的医疗问题和专业医生的回答。该项目首先从ask120网站上爬取这些宝贵的数据,包括问题、答案、疾病...
毕业设计 基于Python+sklearn BERT和知识图谱(Neo4j)的中文电子病例医学命名实体识别源码+详细文档+全部数据资料(高分项目)毕业设计 基于Python+sklearn BERT和知识图谱(Neo4j)的中文电子病例医学命名实体识别源码...
毕业设计 基于SpringBoot的电影搜索和电影知识图谱(Neo4j)源码+详细文档+全部数据资料(高分项目)毕业设计 基于SpringBoot的电影搜索和电影知识图谱(Neo4j)源码+详细文档+全部数据资料(高分项目)毕业设计 基于...
毕业设计 基于Python汽修领域知识图谱(Neo4j)问答源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python汽修领域知识图谱(Neo4j)问答源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python汽修...
毕业设计 基于Python中医药知识图谱(Neo4j)智能问答源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python中医药知识图谱(Neo4j)智能问答源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python...
毕业设计 基于地理格网的时空知识图谱(Neo4j)源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于地理格网的时空知识图谱(Neo4j)源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于地理格网的时空知识...
安装图数据库在这里就不介绍了,本篇主要介绍如何连接neo4j数据库,将知识图谱成功显示在前端页面中。 Neovis.js与Neo4j的连接非常简单明了,并且Neovis 的数据格式与那neo4j数据库保持一致。在单个配置对象中定义...
毕业设计 基于SpringBoot知识图谱(Neo4j)的药物重定位系统源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于SpringBoot知识图谱(Neo4j)的药物重定位系统源码+详细文档+全部数据资料(高分项目).zip毕业设计...
毕业设计 基于Python知识图谱(Neo4j)的金融文本数据挖掘源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python知识图谱(Neo4j)的金融文本数据挖掘源码+详细文档+全部数据资料(高分项目).zip毕业设计 ...
毕业设计 基于Python+知识图谱(Neo4j)的文档搜索系统源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python+知识图谱(Neo4j)的文档搜索系统源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于...
毕业设计 基于大数据平台的知识图谱(Neo4j)存储访问系统源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于大数据平台的知识图谱(Neo4j)存储访问系统源码+详细文档+全部数据资料(高分项目).zip毕业设计 ...
毕业设计 基于Python+Flask模板的知识图谱(Neo4j)问答系统源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Python+Flask模板的知识图谱(Neo4j)问答系统源码+详细文档+全部数据资料(高分项目).zip毕业设计...
课程设计 基于Python+Flask知识图谱(Neo4j)的豆瓣书籍推荐问答系统源码+详细文档+全部数据资料(高分项目)课程设计 基于Python+Flask知识图谱(Neo4j)的豆瓣书籍推荐问答系统源码+详细文档+全部数据资料(高分项目)...