我设法开发了一个查询,该查询从哈希数据库中返回相似的图像。
行由图像的路径以及代表图像哈希的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千个字符。我想知道是否有更好的方法来查询此。我尝试使用联接和视图,但无法使其正常工作。