python - 如何在 SQL 查询中执行此操作,根据此条件查找相似行百分比匹配?
问题描述
我有一个这样的 SQL 表:
MD5 BlockHash
randommd51 randstr1
randommd51 randstr2
randommd51 randstr3
randommd52 randstr2
randommd52 randstr2
randommd52 randstr1
randommd52 randstr7
randommd53 randstr2
randommd53 randstr1
randommd53 randstr2
randommd53 randstr3
randommd54 randstr4
randommd54 randstr55
我在 Python 中有另一个变量,称为“查询”(字典)。字典键是 MD5 值,值是“BlockHash”。
像这样:
{ "randommd55": ["randomstr1", "randomstr2", "randomstr1"] }
我的主要目标:
我想搜索类似的文件。MD5 值代表整个文件的 MD5 值。即使文件中有 1 位差异,它也会改变。
对于每个文件,我随机取 1KB 块并对它们进行哈希处理。
所以现在,我有一个由多个块哈希组成的查询字典。我想将查询块哈希与 SQL 表中的文件进行比较。
我想查看查询文件和 sql 文件之间有多少块哈希匹配(MD5 对于每个文件都是唯一的)。
例如:
md5=="randomd51" 所在的文件有 2 个共同的块哈希(randstr1,randstr2)。所以这是一个 2/3 = 66.666% 的匹配
md5=="randommd52" 所在的文件也有 2 个共同的块哈希(randomstr1,randomstr2)。所以这是一个 2/4,50% 的匹配。注意 randomstr2 在这个文件中重复了两次。但它只在查询哈希中重复 1 次。所以它只有 2/4 匹配(50%)。
我想快速计算 SQL 中每个唯一 MD5 的匹配百分比。我将有数百万行
解决方案
如果我理解正确,您需要与每个 MD5 匹配的块哈希的比例:
select md5,
avg( (blockhash in ('randomstr1', 'randomstr2', 'randomstr3') ) as matching_ratio
from t
group by md5
推荐阅读
- python - 使用 XPATH 和 Python 选择元素?
- ios - “没有这样的模块:AVFAudio”xcode 构建在旧机器上失败,但在新机器上工作正常
- r - R:使用 CLR 进行密度平滑,来自 robComposition 的 smoothSpline 函数
- jquery - 如果元素没有此父类,则应用 CSS
- webrtc - iceCandidate 中的 WebRTC 空字符串
- reactjs - styled-components:组件...已动态创建
- python - 尝试在设置的欢迎频道中发送欢迎消息
- typescript - 如何帮助 Typescript 推断 PropertyDecorator 工厂函数的泛型参数?
- docker - 可以通过 Windows 主机中的 IP 地址访问 Docker linux 容器吗?
- python - Python - 函数的向量比在每个元素上调用循环要慢。Numpy 比原生 Python 慢