Оптимизация поискового запроса хеша изображения - PullRequest
0 голосов
/ 16 мая 2019

Мне удалось разработать запрос, который возвращает похожие изображения из базы данных хэшей.

Строки состоят из пути к изображению, а также из 64 столбцов битов, представляющих хэш изображения. Запрос работает путем сравнения каждого бита целевого изображения с изображениями в базе данных, возврата суммы совпадающих битов, а затем выбора пути, если число совпадений превышает пороговое значение удержания.

SELECT path FROM duplicatesCheck
WHERE (
    SELECT (left1=right1) + ... + (left64=right64)
    FROM 
    (SELECT hash1 AS left1, ... hash64 AS left64
    FROM duplicatesCheck WHERE path=path),
    (SELECT hash1 AS right1, ... hash64 AS right64
    FROM duplicatesCheck WHERE path=?)
) >= 55

Однако запрос очень запутанный, ~ 3,6 тысячи символов. Мне интересно, есть ли лучший способ запросить это. Я пытался использовать объединения и представления, но не смог заставить его работать.

...