我有一个表a,它有一个列'template_phash'。我存储从400K图像生成的氏族。

现在我拍摄了一个随机图像并从该图像生成氏族。

现在我如何查询,以便我可以从表A中获取哈米明距离差异小于阈值的记录,比如为20。

我已经看过汉明距离在sql 中的二进制字符串上,但无法弄清楚。

我想我想知道我需要做出这个功能来实现这一目标,但是如何?

我的两个篮球都在bigint中,例如:7641692061273169067

请帮助我做出这个功能,以便我可以像

一样查询
SELECT product_id, HAMMING_DISTANCE(phash1,  phash2) as hd 
FROM A 
WHERE hd < 20 ORDER BY hd ASC;
.

有帮助吗?

解决方案

我认为汉明距离只是两个散列之间不同比特的计数。第一个xor两个哈希,然后获取二进制文件的计数:

SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top