精华
Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.2) - 可配置的路径扩展过程
-
定义
可配置的路径扩展过程提供完整的配置参数来控制遍历过程。
-
过程调用接口
- 示例 // 3.4(1) 调用可配置的路径扩展过程,寻找三国时期有谁自己没当皇帝、
// 但是他的儿子当了皇帝的。
// 参数:- startNode:代表“朝代”的节点
// - sequece: ‘朝代,<建立,皇帝,父子,-皇帝|人物’
// - maxLevel: -1,遍历直到返回能够到达的所有路径
// 返回结果:曹操,司马昭
MATCH (n:朝代)
WITH n
CALL apoc.path.expandConfig(n,
{ maxLevel: -1,
sequence: '朝代,<建立,皇帝,父子,-皇帝|人物'
}
) YIELD path
RETURN path
// 3.4(2) 调用可配置的路径扩展过程,寻找三国时期为各国效力的文臣。
//
// 参数:- startNode:代表“朝代”的节点
// - relationshipFilter: ‘<建立|父子|主公>’
// - labelFilter: ‘+人物|>文臣’
// - maxLevel: -1,遍历直到返回能够到达的所有路径
// 返回结果:排除既是“文臣”又是“皇帝”的人物。
MATCH (n:朝代)
WITH n
CALL apoc.path.expandConfig(n,
{ maxLevel: -1,
relationshipFilter: '<建立|父子|主公>',
labelFilter: '+人物|>文臣'
}
) YIELD path
WITH nodes(path) AS nodes
WHERE NOT ‘皇帝’ IN labels(nodes[-1])
RETURN nodes[0].name AS kingdom, nodes[-1].name AS advisor
---- 待续 ---- (下篇:3.4 搜索子图)
(原著:Neo4j官方技术支持 @graphway 俞方桦老师)