gpt4 book ai didi

MySQL:通过感知哈希相似性对结果进行分组

转载 作者:行者123 更新时间:2023-11-30 21:42:39 26 4
gpt4 key购买 nike

假设我们有一个包含以下列的 MySQL 表 Image

  • 编号
  • 用户编号
  • p_hash

我知道如何计算新插入行的感知哈希与表中所有现有数据之间的汉明距离(以显示相似图像)。 SQL 查询如下所示:

SELECT `Image`.*, BIT_COUNT(`p_hash` ^ :hash) as `hamming_distance`
FROM `Image`
HAVING `hamming_distance` < 5

我想对每个现有的图像做同样的事情。(检查数据库中是否有相似的图像)因此,我遍历了 Image 表的每一行,执行与上述相同的过程并从表中找到相似的图像。

现在的问题是,在整个过程之后,只有当每个组的元素至少有一个不同的 user_id id 时,我才想获得相似的图像组?

因此,如果发现一组相似图像属于一个用户,则跳过它。但如果它属于多个不同的用户,则将其作为结果之一返回。

请大家帮忙解答

最佳答案

听起来你想要一个自连接。

SELECT i1.id, GROUP_CONCAT(i2.id) AS similar_images
FROM Image AS i1
JOIN Image AS i2 ON i1.user_id != i2.user_id AND BIT_COUNT(i1.`p_hash` ^ i2.p_hash) < 5
GROUP BY i1.id

DEMO

关于MySQL:通过感知哈希相似性对结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50867812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com