ToB企服应用市场:ToB评测及商务社交产业平台

标题: 如何将neo4j,4.x版本摆设到服务器上 [打印本页]

作者: 吴旭华    时间: 2024-9-18 01:36
标题: 如何将neo4j,4.x版本摆设到服务器上


一. 简介

当我们利用neo4j构建知识图谱时,我们希望让别人能和我们共用neo4j进行知识图谱的构建,我们的方法之一就是将neo4j摆设到我们的服务器上,然后将7474,7687端口暴袒露来,如许就可以通过访问服务器公网IP的7474端口来操作我们的数据库。
二. 服务器的设置

1. 起首我们须要有一个自己的服务器

推荐利用2核4G内存的服务器,因为在现实操作过程中B哥因为贪便宜利用2核2G的服务器踩了大坑——服务器内存完全不够用,纵然我仅仅创建了一个 47 节点的图谱,但是由于大量进程占用导致剩余空闲内存很少:

然后就会导致neo4j频繁的停止运行。如果我们利用2核4G的服务器来运行:

可以看到空闲内存云云之富裕,简直就是稳稳地幸福。固然作为赛博垃圾佬,购置服务器前B哥发起大家可以先去小黄鱼碰碰运气。
2. 服务器设置

然后系统什么的CentOS,Ubuntu随便选一个Linux的就行了,然后利用
  1. java --version
复制代码
查看jdk版本

然后根据jdk版本来下载对应的neo4j版本:
jdk 8 - neo4j 3.x
jdk 11 - neo4j 4.x
其他的的忘记了自行去官网搜索。
3. 然后我们就可以下载neo4j了

4. 接下来我们须要去服务器安全组放行7474端口和7687端口


三. neo4j设置

我们须要找到位于neo4j目录下的conf文件,然后利用vim编辑器打开,设置如下:

然后运行
  1. sudo systemctl start neo4j
复制代码
查看状态: 
  1. sudo systemctl status neo4j
复制代码

如许就运行成功了。然后就可以利用欣赏器,以如下格式
  1. http://服务器公网ip:7474/
复制代码
访问到neo4j,ui界面。然后登录密码和账号初始都是: neo4j
然后就可以看到neo4j UI界面:

四. 导入数据集

实在数据集有多种导入情势,我这里就导入xlsx了,我利用的是golang
  1. package main
  2. import (
  3.         "fmt"
  4.         "github.com/tealeg/xlsx"
  5.         //"github.com/neo4j/neo4j-go-driver/v4/neo4j"
  6.         "github.com/neo4j/neo4j-go-driver/v5/neo4j"
  7.         "log"
  8. )
  9. // 定义数据结构
  10. type Clause1 struct {
  11.         Subject   string   `json:"subject"`
  12.         Predicate string   `json:"predicate"`
  13.         Objects   []Object `json:"object"`
  14. }
  15. type Object struct {
  16.         Name string `json:"name"`
  17. }
  18. type Clause struct {
  19.         Node1        string
  20.         Relationship string
  21.         Node2        string
  22. }
  23. func main() {
  24.         uri := "bolt://服务器公网ip:7687"
  25.         username := "neo4j用户名"
  26.         password := "neo4j密码"
  27.         ReadExcel(uri, username, password, "D:\\Projects\\Go_Projects\\MKdomain\\规划行业知识图谱设计demov2.1.xlsx")
  28. }
  29. func ReadExcel(uri, username, password, filepath string) {
  30.         // 连接Neo4j
  31.         driver, err := neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, ""))
  32.         if err != nil {
  33.                 log.Fatalf("Failed to create driver: %v", err)
  34.         }
  35.         defer driver.Close()
  36.         // 验证连接
  37.         session := driver.NewSession(neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite})
  38.         defer session.Close()
  39.         // 读取Excel文件
  40.         filePath := filepath
  41.         xlFile, err := xlsx.OpenFile(filePath)
  42.         if err != nil {
  43.                 log.Fatalf("无法打开数据集: %v", err)
  44.         }
  45.         sheet := xlFile.Sheets[0]
  46.         //len(sheet.Rows);
  47.         for i := 1; i < len(sheet.Rows); i++ {
  48.                 var emptyRow = true
  49.                 var clause Clause
  50.                 for idx, cell := range sheet.Rows[i].Cells {
  51.                         text := cell.String()
  52.                         if text != "" {
  53.                                 emptyRow = false
  54.                         }
  55.                         switch idx {
  56.                         case 0:
  57.                                 clause.Node1 = text
  58.                         case 1:
  59.                                 clause.Relationship = text
  60.                         case 2:
  61.                                 clause.Node2 = text
  62.                         }
  63.                 }
  64.                 if emptyRow {
  65.                         log.Fatalf("the node1 is: %v, the node2 is: %v, the relationship is: %v, the cloumn is: %d.",
  66.                                 clause.Node1, clause.Node2, clause.Relationship, i)
  67.                 }
  68.                 cypher := `
  69.                         MERGE (n1:Node {name: $node1})
  70.                         MERGE (n2:Node {name: $node2})
  71.                         MERGE (n1)-[:` + clause.Relationship + `]->(n2)
  72.                 `
  73.                 params := map[string]interface{}{
  74.                         "node1": clause.Node1,
  75.                         "node2": clause.Node2,
  76.                 }
  77.                 // 写入数据库
  78.                 _, err := session.WriteTransaction(func(tx neo4j.Transaction) (interface{}, error) {
  79.                         res, err := tx.Run(cypher, params)
  80.                         if err != nil {
  81.                                 return nil, err
  82.                         }
  83.                         if res.Next() {
  84.                                 fmt.Println("数据插入完成")
  85.                         }
  86.                         return nil, res.Err()
  87.                 })
  88.                 if err != nil {
  89.                         log.Fatalf("err: %v", err)
  90.                 }
  91.         }
  92. }
复制代码
五. 一个小小的自我倾销

鉴于自己去导入然后生成知识图谱太过麻烦,于是博主开辟了一个知识图谱构建网站,只需上传三元组格式的数据集就可以生成想要的知识图谱了(固然灵动性会缺失一些,但是确实方便了许多):
 http://kd.mysuper.pro/ 
或者直接通过ip访问
http://139.9.74.218/
感谢支持。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4