对 app/core/data_parse/parse_system.py
文件中的 query_neo4j_graph
函数进行了重要优化,主要改进标签名称查询时的递归遍历逻辑。
之前的问题:
优化后的解决方案:
[:BELONGS_TO|WORK_AS|WORK_FOR*1..10]
// 查询通过标签递归遍历匹配的Talent节点
// 使用递归遍历:以标签为起点,查找WORK_AS、BELONGS_TO、WORK_FOR关系,递归遍历直到找到Talent节点
WITH $labels AS targetLabels
// 递归遍历:从标签节点开始,通过关系网络找到所有相关的Talent节点
// 使用可变长度路径匹配,最大遍历深度:10层,避免无限循环
MATCH path = (startTag:DataLabel)-[:BELONGS_TO|WORK_AS|WORK_FOR*1..10]-(t:Talent)
WHERE startTag.name_zh IN targetLabels
// 递归遍历:以标签为起点,查找WORK_AS、BELONGS_TO、WORK_FOR关系,递归遍历直到找到Talent节点
// 步骤1: 定义标签条件列表
WITH $labels AS targetLabels
// 步骤2: 递归遍历关系网络
// 使用可变长度路径匹配,从标签节点开始,通过关系网络找到所有相关的Talent节点
// 关系类型:BELONGS_TO、WORK_AS、WORK_FOR
// 最大遍历深度:10层,避免无限循环
// 方法1: 使用标准Cypher可变长度路径匹配(推荐)
MATCH path = (startTag:DataLabel)-[:BELONGS_TO|WORK_AS|WORK_FOR*1..10]-(t:Talent)
WHERE startTag.name_zh IN targetLabels
*1..10
语法,支持1到10层的关系遍历BELONGS_TO
、WORK_AS
、WORK_FOR
三种主要关系RETURN DISTINCT
确保结果唯一性BELONGS_TO
、WORK_AS
、WORK_FOR
关系进行遍历这次优化显著提升了 query_neo4j_graph
函数的查询能力,特别是在处理标签名称查询时,能够通过递归遍历找到更多相关的人才信息。优化后的函数更加智能、全面,能够满足复杂的图数据库查询需求。