遍历框架
The Neo4j Traversal Framework Java API 是一种基于回调、惰性执行的方式,用于在 Java 中指定对图的期望移动。某些遍历示例可在 遍历图 中找到。
主要概念
遍历以图上的起始节点为入口,返回一组路径,代表被访问的节点及其关系。遍历通过遍历描述来定义,描述中可能包含以下元素
-
Starting node — 定义遍历的起点。
-
Pathexpander — 定义要遍历的内容,通常以关系的方向和类型来说明。
-
Uniqueness — 定义对已遍历节点和关系的限制。
-
Evaluator — 决定返回什么以及是否在当前节点后停止或继续遍历。
-
Order — 定义路径展开的顺序,例如
depth-first(深度优先)或breadth-first(广度优先)。
使用遍历框架
遍历框架可以在 嵌入于 Java 应用程序 中使用。它也可以在使用 用户自定义过程 扩展 Neo4j 时使用。有关示例,请参阅 使用遍历框架的用户自定义过程。
遍历框架 vs Cypher
虽然遍历框架比 Cypher 查询语言 可读性差且更复杂,但它提供了一种强大的图遍历方法。这是因为遍历框架可以在遍历的每一步动态做出自定义选择,从而使过程更具表现力,并且在性能上可能优于 Cypher。
使用遍历框架相较于 Cypher 的一些优势包括
-
遍历框架允许使用任意所需的 Java 库来帮助评估遍历。
-
它允许在路径遍历过程中进行自定义剪枝,这可能会提升遍历性能。更多信息请参见 Evaluator(评估器)。
-
在 Cypher 中,无法指定路径展开的顺序(例如深度优先)。然而,使用遍历框架可以指定 遍历路径的顺序。
-
在 Cypher 中,只有在指定
RELATIONSHIP_GLOBAL唯一性时才会遍历关系。而使用遍历框架可以指定 遍历路径的唯一性约束。
|
通常建议在可能的情况下使用 Cypher。但在使用遍历框架时,请记住
|