运行算法

所有算法都作为 Neo4j 过程公开。可以使用 Neo4j Browser、cypher-shell 直接从 Cypher 调用它们,或从您选择的语言的 Neo4j Driver 中的客户端代码调用它们。

有关运行算法的语法的详细指南,请参阅语法概览部分。简而言之,算法使用 streamstatsmutatewrite 之一的执行模式运行,我们将在本章中介绍这些模式。

可以通过终止执行过程调用的 Cypher 事务来取消任何算法的执行。有关事务如何使用的更多信息,请参阅事务处理

流式

`stream` 模式将算法计算结果作为 Cypher 结果行返回。这类似于标准 Cypher 读取查询的操作方式。

返回的数据可以是节点 ID 和该节点的计算值(例如 PageRank 分数或 WCC componentId),或者两个节点 ID 和节点对的计算值(例如节点相似度相似度分数)。

如果图非常大,`stream` 模式计算的结果也会非常大。在 Cypher 查询中使用 `ORDER BY` 和 `LIMIT` 子句可能有助于支持“前 N 个”类型的使用场景。

统计

`stats` 模式返回算法计算的统计结果,例如计数或百分位数分布。计算的统计摘要作为单个 Cypher 结果行返回。在使用 `stats` 模式时,算法的直接结果不可用。此模式构成了 `mutate` 和 `write` 执行模式的基础,但不尝试进行任何修改或更新。

变异

`mutate` 模式会将算法计算结果写回投射图中。请注意,指定的 `mutateProperty` 值不能事先存在于投射图中。这使得可以在同一个投射图上运行多个算法,而无需在算法执行之间将结果写回 Neo4j。

此执行模式在以下三种场景中特别有用

  • 算法可以依赖于之前算法的结果,而无需写入 Neo4j。

  • 算法结果可以一并写入(参见写入节点属性写入关系)。

  • 算法结果可以通过 Cypher 查询,而无需写入 Neo4j(参见读取图)。

计算的统计摘要与 `stats` 模式类似地返回。变异的数据可以是节点属性(例如 PageRank 分数)、新关系(例如节点相似度)或关系属性。

写入

`write` 模式会将算法计算结果写回 Neo4j 数据库。这类似于标准 Cypher 写入查询的操作方式。计算的统计摘要与 `stats` 模式类似地返回。这是唯一会尝试修改 Neo4j 数据库的执行模式。

写入的数据可以是节点属性(例如 PageRank 分数)、新关系(例如节点相似度)或关系属性。`write` 模式对于算法结果需要被不同查询多次检查的使用场景非常有用,因为计算结果完全由库处理。

为了使 `write` 模式计算的结果能够被另一个算法使用,必须从 Neo4j 数据库中投射一个带有更新图的新图。

常见配置参数

所有算法都允许通过一组配置参数调整其运行时特性。尽管某些参数是算法特有的,但许多参数在算法和执行模式之间是共享的。

要了解更多关于算法特定参数的信息,并找出算法是否支持某个参数,请查阅算法特定的文档页面。
最常用的配置参数列表
concurrency - 整数

控制算法执行的并行度。

此值设置为 4。除非对于Aura 图分析无服务器版,默认值为可用处理器数量。

有关并发设置和限制的更多详细信息,请参阅系统要求的CPU 部分

nodeLabels - 字符串列表

如果运行算法的图是使用多个节点标签投射进行投射的,则此参数可用于仅选择投射标签的子集。算法将只考虑具有任何所选标签的节点。

relationshipTypes - 字符串列表

如果运行算法的图是使用多个关系类型投射进行投射的,则此参数可用于仅选择投射类型的子集。算法将只考虑具有任何所选类型的关系。

nodeWeightProperty - 字符串

在支持节点权重的算法中,此参数定义包含权重的节点属性。

relationshipWeightProperty - 字符串

在支持关系权重的算法中,此参数定义包含权重的关系属性。指定属性必须存在于指定图的所有指定关系类型中。值必须是数字,并且某些算法可能具有额外的取值限制,例如仅要求正权重。

maxIterations - 整数

对于迭代算法,此参数控制最大迭代次数。

tolerance - 浮点数

许多迭代算法接受容差参数。它控制两次迭代之间的最小差值。如果差值小于容差值,则算法被认为是收敛的并停止。

seedProperty - 字符串

某些算法可以增量计算。这意味着即使图已更改,也可以考虑先前执行的结果。`seedProperty` 参数定义了包含种子值的节点属性。种子处理可以加快计算和写入时间。

writeProperty - 字符串

在 `write` 模式下,此参数设置写入结果的节点或关系属性的名称。如果属性已存在,现有值将被覆盖。

writeConcurrency - 整数

在 `write` 模式下,此参数控制写入操作的并行度。默认值为 `concurrency`。

jobId - 字符串

可以提供要启动的作业 ID,以便使用例如 GDS 的日志记录功能更轻松地跟踪它。

logProgress - 布尔值

配置参数,允许在运行过程时关闭/打开百分比日志记录。默认情况下为 `on`。

© . All rights reserved.