hash函数Graph
hash()
函数返回参数的哈希值。其参数可以是数字、字符串、列表、布尔值、NULL等类型的值,或者计算结果为这些类型的表达式。
hash()
函数采用MurmurHash2算法,种子(seed)为0xc70f6907UL
。您可以在Graph中查看其源代码。
说明: 在有10亿个点的情况下,发生碰撞的概率大约是1/10。边的数量与碰撞的概率无关。
在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 |
+-------------------------------+
最后更新: April 1, 2021