Yuguo Qin commited on
Commit
2dbed2e
·
1 Parent(s): 5508c06

Fix neo4j outdated get_edge() return data format.

Browse files
Files changed (1) hide show
  1. lightrag/kg/neo4j_impl.py +7 -5
lightrag/kg/neo4j_impl.py CHANGED
@@ -278,14 +278,16 @@ class Neo4JStorage(BaseGraphStorage):
278
 
279
  result = await session.run(query)
280
  record = await result.single()
281
- if record and "edge_properties" in record:
282
  try:
283
  result = dict(record["edge_properties"])
 
284
  # Ensure required keys exist with defaults
285
  required_keys = {
286
  "weight": 0.0,
287
  "source_id": None,
288
- "target_id": None,
 
289
  }
290
  for key, default_value in required_keys.items():
291
  if key not in result:
@@ -305,20 +307,20 @@ class Neo4JStorage(BaseGraphStorage):
305
  f"and {entity_name_label_target}: {str(e)}"
306
  )
307
  # Return default edge properties on error
308
- return {"weight": 0.0, "source_id": None, "target_id": None}
309
 
310
  logger.debug(
311
  f"{inspect.currentframe().f_code.co_name}: No edge found between {entity_name_label_source} and {entity_name_label_target}"
312
  )
313
  # Return default edge properties when no edge found
314
- return {"weight": 0.0, "source_id": None, "target_id": None}
315
 
316
  except Exception as e:
317
  logger.error(
318
  f"Error in get_edge between {source_node_id} and {target_node_id}: {str(e)}"
319
  )
320
  # Return default edge properties on error
321
- return {"weight": 0.0, "source_id": None, "target_id": None}
322
 
323
  async def get_node_edges(self, source_node_id: str) -> list[tuple[str, str]] | None:
324
  node_label = source_node_id.strip('"')
 
278
 
279
  result = await session.run(query)
280
  record = await result.single()
281
+ if record:
282
  try:
283
  result = dict(record["edge_properties"])
284
+ logger.info(f"Result: {result}")
285
  # Ensure required keys exist with defaults
286
  required_keys = {
287
  "weight": 0.0,
288
  "source_id": None,
289
+ "description": None,
290
+ "keywords": None,
291
  }
292
  for key, default_value in required_keys.items():
293
  if key not in result:
 
307
  f"and {entity_name_label_target}: {str(e)}"
308
  )
309
  # Return default edge properties on error
310
+ return {"weight": 0.0, "description": None, "keywords": None, "source_id": None}
311
 
312
  logger.debug(
313
  f"{inspect.currentframe().f_code.co_name}: No edge found between {entity_name_label_source} and {entity_name_label_target}"
314
  )
315
  # Return default edge properties when no edge found
316
+ return {"weight": 0.0, "description": None, "keywords": None, "source_id": None}
317
 
318
  except Exception as e:
319
  logger.error(
320
  f"Error in get_edge between {source_node_id} and {target_node_id}: {str(e)}"
321
  )
322
  # Return default edge properties on error
323
+ return {"weight": 0.0, "description": None, "keywords": None, "source_id": None}
324
 
325
  async def get_node_edges(self, source_node_id: str) -> list[tuple[str, str]] | None:
326
  node_label = source_node_id.strip('"')