Hash 函数
哈希函数可用于元素的确定性伪随机混洗。
Simhash 是一种哈希函数,对于相似的参数返回接近的哈希值。
halfMD5
将所有输入参数解读为字符串,并计算每个字符串的 MD5 哈希值。然后组合这些哈希值,取结果字符串哈希的前 8 字节,并将其解释为大端字节序的 UInt64
。
该函数相对较慢(每秒每处理器核心只能处理 500 万个短字符串)。考虑使用 sipHash64 函数。
参数
此函数接受可变数量的输入参数。参数可以是任何经过支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数、相同数据的有名和无名的 Tuple
、相同数据的 Map
和对应的 Array(Tuple(key, value))
类型),哈希函数计算的值可能也会相同。
返回值
返回一个 UInt64 数据类型的哈希值。
示例
MD4
计算字符串的 MD4,并将结果字节集返回为 FixedString(16)。
MD5
计算字符串的 MD5,并将结果字节集返回为 FixedString(16)。如果你并不特别需要 MD5,但需要一个合适的 128 位加密哈希,则应使用 sipHash128
函数。如果你想要与 md5sum
工具输出相同的结果,请使用 lower(hex(MD5(s)))。
RIPEMD160
生成 RIPEMD-160 哈希值。
语法
参数
input
:输入字符串。String
返回值
- 160 位
RIPEMD-160
哈希值,类型为 FixedString(20)。
示例
使用 hex 函数将结果表示为十六进制编码字符串。
查询:
sipHash64
生成 64 位 SipHash 哈希值。
这是一种加密哈希函数。它的工作速度至少是 MD5 哈希函数的三倍。
该函数 将输入参数解读为字符串,并计算每个参数的哈希值。然后通过以下算法组合哈希值:
- 第一个和第二个哈希值连接到一个数组中并进行哈希。
- 之前计算的哈希值与第三个输入参数的哈希值以类似的方式进行哈希。
- 这个计算将对所有剩余的原始输入哈希值重复进行。
参数
该函数接受可变数量的输入参数,参数可以是任何经过支持的数据类型。
返回值
返回一个 UInt64 数据类型的哈希值。
请注意,对于不同参数类型的相同输入值,计算得出的哈希值可能会相等。例如不同大小的整数类型、有名和无名的 Tuple
具有相同数据、Map
和相应的 Array(Tuple(key, value))
类型具有相同数据都会受到影响。
示例
sipHash64Keyed
与 sipHash64 相同,但额外接受一个显式的密钥参数,而不是使用固定密钥。
语法
参数
与 sipHash64 相同,但第一个参数是包含两个 UInt64 值的元组,代表密钥。
返回值
返回一个 UInt64 数据类型的哈希值。
示例
查询:
sipHash128
与 sipHash64 类似,但生成 128 位哈希值,即最终的 xor-folding 状态处理至 128 位。
这种 128 位变体与参考实现不同,它较弱。这种版本存在的原因是,在撰写时,没有官方的 128 位 SipHash 扩展。新的项目可能应使用 sipHash128Reference。
语法
参数
与 sipHash64 相同。
返回值
返回类型为 FixedString(16) 的 128 位 SipHash
哈希值。
示例
查询:
结果:
sipHash128Keyed
与 sipHash128 类似,但额外接受一个显式的密钥参数,而不是使用固定密钥。
这种 128 位变体与参考实现不同,它较弱。这种版本存在的原因是,在撰写时,没有官方的 128 位 SipHash 扩展。新的项目可能应使用 sipHash128ReferenceKeyed。
语法
参数
与 sipHash128 相同,但第一个参数是包含两个 UInt64 值的元组,代表密钥。
返回值
返回一个 128 位 SipHash
哈希值,类型为 FixedString(16)。
示例
查询:
结果:
sipHash128Reference
与 sipHash128 类似,但实现了原始 SipHash 作者的 128 位算法。
语法
参数
与 sipHash128 相同。
返回值
返回一个 128 位 SipHash
哈希值,类型为 FixedString(16)。
示例
查询:
结果:
sipHash128ReferenceKeyed
与 sipHash128Reference 类似,但额外接受一个显式的密钥参数,而不是使用固定密钥。
语法
参数
与 sipHash128Reference 相同,但第一个参数是包含两个 UInt64 值的元组,代表密钥。
返回值
返回一个 128 位 SipHash
哈希值,类型为 FixedString(16)。
示例
查询:
结果:
cityHash64
生成 64 位 CityHash 哈希值。
这是一种快速的非加密哈希函数。对于字符串参数,它使用 CityHash 算法,对于其它数据类型的参数,使用实现特定的快速非加密哈希函数。该函数使用 CityHash 组合器获得最终结果。
请注意,谷歌在将 CityHash 添加到 ClickHouse 之后更改了 CityHash 的算法。换句话说,ClickHouse 的 cityHash64 和 Google 上游的 CityHash 现在生成不同的结果。ClickHouse cityHash64 对应于 CityHash v1.0.2。
参数
该函数接受可变数量的输入参数。参数可以是任何经过支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数、相同数据的有名和无名的 Tuple
、相同数据的 Map
和对应的 Array(Tuple(key, value))
类型),哈希函数计算的值也可能相同。
返回值
返回一个 UInt64 数据类型的哈希值。
示例
调用示例:
以下示例演示如何计算整个表的校验和,精确到行顺序:
intHash32
从任意类型的整数计算 32 位哈希码。这是一种相对较快的非加密哈希函数,质量平均。
语法
参数
int
— 要哈希的整数。(U)Int*。
返回值
- 32 位哈希码。UInt32。
示例
查询:
结果:
intHash64
从任意类型的整数计算 64 位哈希码。这是一种相对较快的非加密哈希函数,质量平均。它的速度快于 intHash32。
语法
参数
int
— 要哈希的整数。(U)Int*。
返回值
- 64 位哈希码。UInt64。
示例
查询:
结果:
SHA1, SHA224, SHA256, SHA512, SHA512_256
从字符串计算 SHA-1、SHA-224、SHA-256、SHA-512、SHA-512-256 哈希,并将结果字节集返回为 FixedString。
语法
该函数的工作速度相对较慢(SHA-1 每秒每处理器核心处理大约 500 万个短字符串,而 SHA-224 和 SHA-256 每秒大约处理 220 万个)。我们建议仅在需要特定哈希函数而无法选择时使用此函数。即使在这些情况下,我们也建议在插入时离线应用函数,预先计算值,而不是在 SELECT
查询中应用。
参数
s
— 用于 SHA 哈希计算的输入字符串。String。
返回值
- SHA 哈希值,作为未编码的十六进制 FixedString。SHA-1 返回为 FixedString(20),SHA-224 返回为 FixedString(28),SHA-256 返回为 FixedString(32),SHA-512 返回为 FixedString(64)。 FixedString。
示例
使用 hex 函数将结果表示为十六进制编码字符串。
查询:
结果:
BLAKE3
计算 BLAKE3 哈希字符串,并将结果字节集返回为 FixedString。
语法
该加密哈希函数与 BLAKE3 Rust 库集成在 ClickHouse 中。该函数相当快,性能比 SHA-2 快约两倍,同时生成与 SHA-256 相同长度的哈希。
参数
- s - 用于 BLAKE3 哈希计算的输入字符串。String。
返回值
- 作为 FixedString(32) 的 BLAKE3 哈希。FixedString。
示例
使用 hex 函数将结果表示为十六进制编码字符串。
查询:
结果:
URLHash(url[, N])
一种快速、质量良好的非加密哈希函数,用于从 URL 获得的字符串,使用某种类型的规范化。
URLHash(s)
– 从字符串计算哈希,若最后存在 /
、?
或 #
之一则不包括它们。
URLHash(s, N)
– 从字符串计算哈希,计算到 URL 层级的 N 级,而不包括最后存在的 /
、?
或 #
之一。层级与 URLHierarchy 相同。
farmFingerprint64
farmHash64
生成 64 位 FarmHash 或 Fingerprint 值。farmFingerprint64
是优选的稳定和可移植值。
这些函数分别使用来自所有可用方法的 Fingerprint64
和 Hash64
方法。
参数
该函数接受可变数量的输入参数。参数可以是任何经过支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数、相同数据的有名和无名的 Tuple
、相同数据的 Map
和对应的 Array(Tuple(key, value))
类型),哈希函数计算的值也可能相同。
返回值
返回一个 UInt64 数据类型的哈希值。
示例
javaHash
计算来自 string、Byte、Short、Integer、Long 的 JavaHash。这个哈希函数既不快也不具备良好的质量。使用它的唯一原因是当另一个系统已经使用此算法,并且您必须准确计算相同的结果。
请注意,Java 仅支持计算有符号整数哈希,因此如果您想计算无符号整数哈希,则必须将其转换为适当的有符号 ClickHouse 类型。
语法
返回值
一个 Int32
数据类型的哈希值。
示例
查询:
结果:
查询:
结果:
javaHashUTF16LE
从字符串中计算 JavaHash,假设它包含表示 UTF-16LE 编码字符串的字节。
语法
参数
stringUtf16le
— UTF-16LE 编码的字符串。
返回值
一个 Int32
数据类型的哈希值。
示例
正确查询 UTF-16LE 编码字符串。
查询:
结果:
hiveHash
从字符串计算 HiveHash
。
这只是将符号位清零的 JavaHash。此函数在 Apache Hive 版本 3.0 之前使用。这个哈希函数既不快也不具备良好的质量。使用它的唯一原因是当另一个系统已经使用此算法,并且您必须准确计算相同的结果。
返回值
hiveHash
哈希值。Int32。
示例
查询:
结果:
metroHash64
生成 64 位 MetroHash 哈希值。
参数
该函数接受可变数量的输入参数。参数可以是任何经过支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数、相同数据的有名和无名的 Tuple
、相同数据的 Map
和对应的 Array(Tuple(key, value))
类型),哈希函数计算的值也可能相同。
返回值
返回一个 UInt64 数据类型的哈希值。
示例
jumpConsistentHash
计算来自 UInt64 的 JumpConsistentHash。接受两个参数:一个 UInt64 类型的键和桶的数量。返回 Int32。有关更多信息,请参见链接:JumpConsistentHash
kostikConsistentHash
Konstantin 'kostik' Oblakov 提出的 O(1) 时间和空间一致哈希算法。之前称为 yandexConsistentHash
。
语法
别名:yandexConsistentHash
(为向后兼容而保留)。
参数
返回值
- 一个 UInt16 数据类型的哈希值。
实现细节
当 n <= 32768 时,它是有效的。
示例
查询:
murmurHash2_32, murmurHash2_64
生成 MurmurHash2 哈希值。
参数
两个函数都接受可变数量的输入参数。参数可以是任何经过支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数、相同数据的有名和无名的 Tuple
、相同数据的 Map
和对应的 Array(Tuple(key, value))
类型),哈希函数计算的值也可能相同。
返回值
示例
gccMurmurHash
使用与 gcc 相同的哈希种子计算 64 位 MurmurHash2 哈希值。它在 Clang 和 GCC 构建之间是可移植的。
语法
参数
par1, ...
— 可变数量的参数,可以是任何经过支持的数据类型。
返回值
- 计算出的哈希值。UInt64。
示例
查询:
结果:
kafkaMurmurHash
使用与 Kafka 相同的哈希种子计算 32 位 MurmurHash2 哈希值,并且不包括最高位,以与 Default Partitioner 兼容。
语法
参数
par1, ...
— 可变数量的参数,可以是任何经过支持的数据类型。
返回值
- 计算出的哈希值。UInt32。
示例
查询:
结果:
murmurHash3_32, murmurHash3_64
生成 MurmurHash3 哈希值。
参数
两个函数都接受可变数量的输入参数。参数可以是任何经过支持的数据类型。对于某些数据类型,即使参数的类型不同(不同大小的整数、相同数据的有名和无名的 Tuple
、相同数据的 Map
和对应的 Array(Tuple(key, value))
类型),哈希函数计算的值也可能相同。
返回值
示例
murmurHash3_128
生成 128 位 MurmurHash3 哈希值。
语法
参数
返回值
返回一个 128 位 MurmurHash3
哈希值。FixedString(16)。
示例
查询:
结果:
xxh3
生成 64 位 xxh3 哈希值。
语法
参数
expr
— 一系列 表达式 的任何数据类型。
返回值
返回一个 64 位 xxh3
哈希值。UInt64。
示例
查询:
结果:
xxHash32, xxHash64
从字符串计算 xxHash
。提供两种形式,32 位和 64 位。
返回值
- 哈希值。UInt32/64。
返回类型对于 xxHash32
将是 UInt32
,而对于 xxHash64
将是 UInt64
。
示例
查询:
结果:
参见
ngramSimHash
将 ASCII 字符串拆分为 ngramsize
符号的 n-gram,并返回 n-gram simhash
。区分大小写。
可用于检测bitHammingDistance 所示的半重复字符串。计算出的两个字符串的 simhashes
的汉明距离越小,这些字符串越可能相同。
语法
参数
返回值
- 哈希值。UInt64。
示例
查询:
结果:
ngramSimHashCaseInsensitive
将 ASCII 字符串拆分为 ngramsize
符号的 n-gram,并返回 n-gram simhash
。不区分大小写。
可用于检测bitHammingDistance 所示的半重复字符串。计算出的两个字符串的 simhashes
的汉明距离越小,这些字符串越可能相同。
语法
参数
返回值
- 哈希值。UInt64。
示例
查询:
结果:
ngramSimHashUTF8
将 UTF-8 字符串拆分为 ngramsize
符号的 n-gram,并返回 n-gram simhash
。区分大小写。
可用于检测bitHammingDistance 所示的半重复字符串。计算出的两个字符串的 simhashes
的汉明距离越小,这些字符串越可能相同。
语法
参数
返回值
- 哈希值。UInt64。
示例
查询:
结果:
ngramSimHashCaseInsensitiveUTF8
将一个 UTF-8 字符串分割为 ngramsize
符号的 n-gram,并返回 n-gram 的 simhash
。不区分大小写。
可以用于检测半重复字符串,使用 bitHammingDistance。计算出的两个字符串的 simhashes
之间的 汉明距离 越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
- 哈希值。 UInt64。
示例
查询:
结果:
wordShingleSimHash
将一个 ASCII 字符串分割为 shinglesize
个单词的部分(shingles),并返回单词 shingle 的 simhash
。区分大小写。
可以用于检测半重复字符串,使用 bitHammingDistance。计算出的两个字符串的 simhashes
之间的 汉明距离 越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
- 哈希值。 UInt64。
示例
查询:
结果:
wordShingleSimHashCaseInsensitive
将一个 ASCII 字符串分割为 shinglesize
个单词的部分(shingles),并返回单词 shingle 的 simhash
。不区分大小写。
可以用于检测半重复字符串,使用 bitHammingDistance。计算出的两个字符串的 simhashes
之间的 汉明距离 越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
- 哈希值。 UInt64。
示例
查询:
结果:
wordShingleSimHashUTF8
将一个 UTF-8 字符串分割为 shinglesize
个单词的部分(shingles),并返回单词 shingle 的 simhash
。区分大小写。
可以用于检测半重复字符串,使用 bitHammingDistance。计算出的两个字符串的 simhashes
之间的 汉明距离 越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
- 哈希值。 UInt64。
示例
查询:
结果:
wordShingleSimHashCaseInsensitiveUTF8
将一个 UTF-8 字符串分割为 shinglesize
个单词的部分(shingles),并返回单词 shingle 的 simhash
。不区分大小写。
可以用于检测半重复字符串,使用 bitHammingDistance。计算出的两个字符串的 simhashes
之间的 汉明距离 越小,这两个字符串相同的可能性就越大。
语法
参数
返回值
- 哈希值。 UInt64。
示例
查询:
结果:
wyHash64
生成一个 64 位的 wyHash64 哈希值。
语法
参数
string
— 字符串。 String。
返回值
- 哈希值。 UInt64。
示例
查询:
结果:
ngramMinHash
将一个 ASCII 字符串分割为 ngramsize
符号的 n-grams,并为每个 n-gram 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。区分大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashCaseInsensitive
将一个 ASCII 字符串分割为 ngramsize
符号的 n-grams,并为每个 n-gram 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。忽略大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashUTF8
将一个 UTF-8 字符串分割为 ngramsize
符号的 n-grams,并为每个 n-gram 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。区分大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashCaseInsensitiveUTF8
将一个 UTF-8 字符串分割为 ngramsize
符号的 n-grams,并为每个 n-gram 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。忽略大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArg
将一个 ASCII 字符串分割为 ngramsize
符号的 n-grams,并返回通过 ngramMinHash 函数计算出的具有相同输入的最小和最大哈希的 n-grams。区分大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArgCaseInsensitive
将一个 ASCII 字符串分割为 ngramsize
符号的 n-grams,并返回通过 ngramMinHashCaseInsensitive 函数计算出的具有相同输入的最小和最大哈希的 n-grams。忽略大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArgUTF8
将一个 UTF-8 字符串分割为 ngramsize
符号的 n-grams,并返回通过 ngramMinHashUTF8 函数计算出的具有相同输入的最小和最大哈希的 n-grams。区分大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
ngramMinHashArgCaseInsensitiveUTF8
将一个 UTF-8 字符串分割为 ngramsize
符号的 n-grams,并返回通过 ngramMinHashCaseInsensitiveUTF8 函数计算出的具有相同输入的最小和最大哈希的 n-grams。忽略大小写。
语法
参数
string
— 字符串。 String。ngramsize
— n-gram 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHash
将一个 ASCII 字符串分割为 shinglesize
个单词的部分(shingles),并为每个单词 shingle 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。区分大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashCaseInsensitive
将一个 ASCII 字符串分割为 shinglesize
个单词的部分(shingles),并为每个单词 shingle 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。忽略大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashUTF8
将一个 UTF-8 字符串分割为 shinglesize
个单词的部分(shingles),并为每个单词 shingle 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。区分大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashCaseInsensitiveUTF8
将一个 UTF-8 字符串分割为 shinglesize
个单词的部分(shingles),并为每个单词 shingle 计算哈希值。使用 hashnum
个最小哈希计算最小哈希,并使用 hashnum
个最大哈希计算最大哈希。返回包含这些哈希的元组。忽略大小写。
可以用于检测半重复字符串,使用 tupleHammingDistance。对于两个字符串:如果返回的哈希中的一个在两个字符串中相同,则认为这两个字符串是相同的。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArg
将一个 ASCII 字符串分割为 shinglesize
个单词的部分(shingles),并返回通过 wordshingleMinHash 函数计算出的具有相同输入的最小和最大单词哈希的 shingles。区分大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArgCaseInsensitive
将一个 ASCII 字符串分割为 shinglesize
个单词的部分(shingles),并返回通过 wordShingleMinHashCaseInsensitive 函数计算出的具有相同输入的最小和最大单词哈希的 shingles。忽略大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArgUTF8
将一个 UTF-8 字符串分割为 shinglesize
个单词的部分(shingles),并返回通过 wordShingleMinHashUTF8 函数计算出的具有相同输入的最小和最大单词哈希的 shingles。区分大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingle 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
wordShingleMinHashArgCaseInsensitiveUTF8
将 UTF-8 字符串分割为每个 shinglesize
个单词的部分(shingles),并返回通过相同输入计算的最小和最大单词哈希值,这些哈希值是通过 wordShingleMinHashCaseInsensitiveUTF8 函数得出的。忽略大小写。
语法
参数
string
— 字符串。 String。shinglesize
— 单词 shingles 的大小。可选。可能的值:从1
到25
的任何数字。默认值:3
。 UInt8。hashnum
— 用于计算结果的最小和最大哈希的数量。可选。可能的值:从1
到25
的任何数字。默认值:6
。 UInt8。
返回值
示例
查询:
结果:
sqidEncode
将数字编码为 Sqid,这是类似于 YouTube 的 ID 字符串。
输出字母表为 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
。
请勿将此函数用于哈希 - 生成的 ID 可解码回原始数字。
语法
别名:sqid
参数
- 可变数量的 UInt8、UInt16、UInt32 或 UInt64 数字。
返回值
一个 sqid String。
示例
sqidDecode
将 Sqid 解码回其原始数字。 如果输入字符串不是有效的 sqid,则返回空数组。
语法
参数
- 一个 sqid - String
返回值
将 sqid 转换为数字的 Array(UInt64)。
示例