【发布时间】:2018-06-15 00:50:44
【问题描述】:
假设我们有 MySQL 表 Image 和以下列
- 身份证
- user_id
- p_hash
我知道如何计算新插入行的感知散列与表中所有现有数据之间的汉明距离(以显示相似图像)。 SQL 查询如下所示:
SELECT `Image`.*, BIT_COUNT(`p_hash` ^ :hash) as `hamming_distance`
FROM `Image`
HAVING `hamming_distance` < 5
我想对每个现有的图像做同样的事情。(检查数据库中是否有类似的图像)
所以,我遍历了Image 表的每一行,执行与上述相同的过程,并从表中找到相似的图像。
现在的问题是,在整个过程之后,只有当每个组的元素至少有一个不同的user_id id 时,我才想获得相似的图像组?
因此,如果发现一组相似图像属于一个用户,则跳过它。但如果它属于多个不同的用户,则将其作为结果之一返回。
请帮忙解答一下。
【问题讨论】:
-
示例数据和预期结果在这里会有所帮助。