跳到主要内容
最后于 更新

HAMMING_DISTANCE

描述​

计算两个 byte 向量的 Hamming 距离,即按位 XOR 后不同 bit 的数量。 NULL 数组或 NULL 元素会报错。

在包含此能力的 Doris 4.2 构建中可用。 始终执行精确标量计算,不自动改写为 ANN 检索。

语法​

HAMMING_DISTANCE(<array1>, <array2>)

参数​

参数描述
<array1>整数数组,允许 TINYINT、SMALLINT、INT、BIGINT,统一转换为 ARRAY;每个元素必须在 [0,255]。不接受浮点、Decimal、LARGEINT 数组。
<array2>整数数组,允许 TINYINT、SMALLINT、INT、BIGINT,统一转换为 ARRAY;每个元素必须在 [0,255]。不接受浮点、Decimal、LARGEINT 数组。 两个数组的长度必须相同。

返回值​

返回 FLOAT,值越小越接近。空数组对返回 0;N 字节向量的最大距离是 8N。 长度不匹配、NULL 数组或 NULL 元素会报错,不返回 NULL。 越界元素也会报错。

示例​

SELECT HAMMING_DISTANCE([0,255,170], [255,0,85]) AS value;
value
24
SELECT HAMMING_DISTANCE([], []) AS value;
value
0
SELECT HAMMING_DISTANCE(NULL, [0,1]);
ERROR: First argument for function hamming_distance cannot be null
SELECT HAMMING_DISTANCE([0,NULL], [0,1]);
ERROR: First argument for function hamming_distance cannot have null
SELECT HAMMING_DISTANCE([256], [0]);
ERROR: Hamming vector elements must be integers in [0, 255]