У меня есть 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, а значениями являются «BlockHa sh».
Например:
{ "randommd55": ["randomstr1", "randomstr2", "randomstr1"] }
Моя главная цель:
Я хочу найти похожие файлы. Значение MD5 представляет полное значение MD5 файла. Это изменится, даже если в файле есть 1-битная разница.
Для каждого файла я беру случайные блоки размером 1 КБ и х sh их.
Итак, у меня есть словарь запросов, состоящий из нескольких блоков ha sh. Я хочу сравнить запрос blockha sh с файлами внутри таблицы SQL.
Я хочу посмотреть, сколько блоков sh совпадают между файлом запроса и файлами sql (MD5 не является обязательным для каждого файла).
Например:
Файл, в котором md5 == "randommd51" находится, имеет 2 общих блока sh (randstr1, randstr2). Таким образом, это 2/3 = 66,666% совпадений
Файл, в котором md5 == "randommd52" находится, также имеет 2 общих блока sh (randomstr1, randomstr2). Так что это 2/4, 50% матча. Обратите внимание, что randomstr2 повторяется два раза в этом файле. Но это повторяется только 1 раз в queryha sh. Таким образом, это всего лишь 2/4 совпадения (50%).
Я хочу быстро рассчитать процентное совпадение для каждого уникального MD5 в SQL. Я буду иметь миллионы строк