# -*- coding: utf-8 -*-
|
# neo4j.py
|
# @author: lyg
|
# @date: 2025-04-24
|
# @version: 0.0.1
|
# @description: neo4j数据库操作
|
|
from py2neo import Graph, Node, Relationship
|
import json
|
|
|
class Neo4jHelper:
|
def __init__(self):
|
self.graph = Graph('http://192.168.1.14:7474', user='neo4j', password='123456')
|
|
def create_page_node(self, page_info):
|
"""
|
创建页面节点
|
"""
|
# 创建节点
|
node = Node("Page", page_num=page_info.page_num,
|
chapter_info=json.dumps(page_info.chapter_info, ensure_ascii=False, indent=2),
|
text=page_info.text,
|
entities=json.dumps(page_info.entities, ensure_ascii=False, indent=2))
|
self.graph.create(node)
|
return node
|
|
def create_entity_node(self, entity: str):
|
"""
|
创建实体节点
|
"""
|
node = self.graph.nodes.match("Entity", text=entity).first()
|
if node:
|
return node
|
node = Node("Entity", text=entity)
|
self.graph.create(node)
|
return node
|
|
def create_page_entity_relationship(self, page_node, entity_node):
|
"""
|
创建页面和实体节点的关系
|
"""
|
relationship = Relationship(page_node, "page_entity", entity_node)
|
self.graph.create(relationship)
|
return relationship
|
|
def create_entity_relationship(self, entity_node1, entity_node2):
|
"""
|
创建实体节点的关系
|
"""
|
if entity_node1 == entity_node2:
|
return
|
relationship = Relationship(entity_node1, "entity_entity", entity_node2)
|
if self.graph.exists(relationship):
|
return
|
self.graph.create(relationship)
|
return relationship
|