跳转至

hash 函数Graph

hash()函数返回参数的哈希值。其参数可以是数字、字符串、列表、布尔值、NULL 等类型的值,或者计算结果为这些类型的表达式。

hash()函数采用 MurmurHash2 算法,种子(seed)为0xc70f6907UL。用户可以在 Graph 中查看其源代码。

在 Java 中的调用方式如下:

MurmurHash2.hash64("to_be_hashed".getBytes(),"to_be_hashed".getBytes().length, 0xc70f6907)

历史版本兼容性Graph

nGQL 1.0 不支持字符串类型的 VID,一种常用的处理方式是用 hash 函数获取字符串的哈希值,然后将该值设置为 VID。但从 nGQL 2.0 开始,同时支持了字符串和整数类型的 VID,所以无需再使用这种方式设置 VID。

计算数字的哈希值Graph

nebula> YIELD hash(-123);
+--------------+
| hash(-(123)) |
+--------------+
| -123         |
+--------------+

计算字符串的哈希值Graph

nebula> YIELD hash("to_be_hashed");
+----------------------+
| hash("to_be_hashed") |
+----------------------+
| -1098333533029391540 |
+----------------------+

计算列表的哈希值Graph

nebula> YIELD hash([1,2,3]);
+----------------+
| hash([1,2,3])  |
+----------------+
| 11093822460243 |
+----------------+

计算布尔值的哈希值Graph

nebula> YIELD hash(true);
+------------+
| hash(true) |
+------------+
| 1          |
+------------+

nebula> YIELD hash(false);
+-------------+
| hash(false) |
+-------------+
| 0           |
+-------------+

计算 NULL 的哈希值Graph

nebula> YIELD hash(NULL);
+------------+
| hash(NULL) |
+------------+
| -1         |
+------------+

计算表达式的哈希值Graph

nebula> YIELD hash(toLower("HELLO NEBULA"));
+-------------------------------+
| hash(toLower("HELLO NEBULA")) |
+-------------------------------+
| -8481157362655072082          |
+-------------------------------+

最后更新: January 17, 2022