指纹识别 (Fingerprinting)
以下函数计算节点、关系或整个图的哈希值。它会考虑所有属性、节点标签和关系类型。
| 用于哈希的算法可能会在不同 APOC 版本之间发生变化。因此,仅能比较同一图中,或使用相同 APOC 版本的不同图中的两个实体/图的哈希结果。 |
图的哈希值首先计算每个节点的哈希值。生成的哈希值列表会被排序,并为每个节点添加所有关系及其终点节点的哈希值。内部 ID 不包含在哈希值中。
也可以提供一个 propertyKeys 列表,以便在所有节点上忽略这些属性。这在存储诸如 created=timestamp() 等应被忽略的属性时非常有用。
| 函数名称 | 描述 |
|---|---|
|
计算 |
|
计算 |
|
计算整个图的 MD5 校验和。此函数使用内存中数据结构。不适用于加密用例。 |
配置参数
| 名称 (name) | type | 默认 | description(描述) |
|---|---|---|---|
digestAlgorithm |
STRING |
"MD5" |
用于计算指纹的算法。支持的值包括: |
strategy |
STRING |
"LAZY" |
定义节点/关系的过滤行为。支持的值包括:
|
nodeAllowMap |
MAP<STRING, LIST<STRING>> |
{} |
节点标签名称映射到该标签允许的属性列表。 |
nodeDisallowMap |
MAP<STRING, LIST<STRING>> |
[] |
节点标签名称映射到该标签应忽略的属性列表。 |
relAllowMap |
MAP<STRING, LIST<STRING>> |
{} |
关系类型名称映射到该类型允许的属性列表。 |
relDisallowMap |
MAP<STRING, LIST<STRING>> |
[] |
关系类型名称映射到该类型应忽略的属性列表。 |
mapAllowList |
LIST<STRING> |
[] |
当被哈希的对象为 Map 时,允许的键列表。 |
mapDisallowList |
LIST<STRING> |
[] |
当被哈希的对象为 Map 时,应忽略的键列表。 |
allNodesAllowList |
LIST<STRING> |
[] |
全局允许的节点属性列表。 |
allNodesDisallowList |
LIST<STRING> |
[] |
全局忽略的节点属性列表。 |
allRelsAllowList |
LIST<STRING> |
[] |
全局允许的关系属性列表。 |
allRelsDisallowList |
LIST<STRING> |
[] |
全局忽略的关系属性列表。 |
|
无法为同一实体类型同时定义“允许”和“禁止”列表。因此,在设置节点、关系和 Map 的指纹识别参数时,列表必须统一为“允许”或“禁止”模式。 |