作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个表 A,其中有一列“template_phash”。我存储从 400K 图像生成的 phash。
现在我拍摄一张随机图像并从该图像生成一个 phash。
现在如何查询,以便从表 A 中获取汉明距离差小于阈值的记录,例如 20。
我看过Hamming distance on binary strings in SQL ,但想不通。
我想我发现我需要创建一个函数来实现这一点,但是如何实现呢?
我的两个 phash 都在 BigInt 中,例如:7641692061273169067
请帮我制作函数,以便我可以像这样查询
SELECT product_id, HAMMING_DISTANCE(phash1, phash2) as hd
FROM A
WHERE hd < 20 ORDER BY hd ASC;
最佳答案
我发现汉明距离只是两个哈希值之间不同位的计数。首先对两个哈希值进行异或运算,然后得到二进制哈希值的计数:
SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;
关于两个相位之间的mysql汉明距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037578/
我是一名优秀的程序员,十分优秀!