Jelajahi Sumber

代码提交

SGTY 2 bulan lalu
induk
melakukan
970a7f0d8b
3 mengubah file dengan 110 tambahan dan 8 penghapusan
  1. 100 0
      app.log
  2. 6 8
      community/dump_graph_data.py
  3. 4 0
      router/graph_router.py

File diff ditekan karena terlalu besar
+ 100 - 0
app.log


+ 6 - 8
community/dump_graph_data.py

@@ -13,8 +13,6 @@ from db.session import SessionLocal
 #两个会话,分别是读取节点和属性的
 db = SessionLocal()
 prop = SessionLocal()
-#图谱id
-version = 'ER'
 
 def get_props(ref_id):
     props = {}
@@ -27,8 +25,8 @@ def get_props(ref_id):
 
 def get_entities():
     #COUNT_SQL = "select count(*) from kg_nodes where version=:version"
-    COUNT_SQL = "select count(*) from kg_nodes"
-    result = db.execute(text(COUNT_SQL), {'version': version})
+    COUNT_SQL = "select count(*) from kg_nodes where status=0"
+    result = db.execute(text(COUNT_SQL))
     count = result.scalar()
 
     print("total nodes: ", count)
@@ -37,8 +35,8 @@ def get_entities():
     start = 1
     while start < count:    
         #sql = """select id,name,category from kg_nodes where version=:version order by id limit :batch OFFSET :start"""
-        sql = """select id,name,category from kg_nodes order by id limit :batch OFFSET :start"""
-        result = db.execute(text(sql), {'start':start, 'batch':batch, 'version': version})
+        sql = """select id,name,category from kg_nodes where status=0 order by id limit :batch OFFSET :start"""
+        result = db.execute(text(sql), {'start':start, 'batch':batch})
         #["发热",{"type":"症状","description":"发热是诊断的主要目的,用于明确发热病因。"}]
         row_count = 0
         for row in result:
@@ -66,7 +64,7 @@ def get_names(src_id, dest_id):
 def get_relationships():
     #COUNT_SQL = "select count(*) from kg_edges where version=:version"
     COUNT_SQL = "select count(*) from kg_edges"
-    result = db.execute(text(COUNT_SQL), {'version': version})
+    result = db.execute(text(COUNT_SQL))
     count = result.scalar()
 
     print("total edges: ", count)
@@ -77,7 +75,7 @@ def get_relationships():
     while start < count:    
         #sql = """select id,name,category,src_id,dest_id from kg_edges where version=:version order by id limit :batch OFFSET :start"""
         sql = """select id,name,category,src_id,dest_id from kg_edges order by id limit :batch OFFSET :start"""
-        result = db.execute(text(sql), {'start':start, 'batch':batch, 'version': version})
+        result = db.execute(text(sql), {'start':start, 'batch':batch})
         #["发热",{"type":"症状","description":"发热是诊断的主要目的,用于明确发热病因。"}]
         row_count = 0
         for row in result:

+ 4 - 0
router/graph_router.py

@@ -87,6 +87,10 @@ async def neighbor_search(
             entities, relations = graph_helper.neighbor_search(item["id"], 1)
             max = 20 #因为类似发热这种疾病会有很多关联的疾病,所以需要防止检索范围过大,设置了上限
             for neighbor in entities:
+
+                #有时候数据中会出现链接有的节点,但是节点数据中缺失的情况,所以这里要检查
+                if "type" not in neighbor.keys():
+                    continue
                 if neighbor["type"] == neighbor_type:
                     #如果这里正好找到了要求检索的节点类型
                     if neighbor["id"] not in neighbors_data: