MySQL은 두 개의 샤시 사이의 거리를 캠핑합니다
-
21-12-2019 - |
문제
C 럼 'template_phash'가있는 테이블 A가 있습니다.나는 400k의 이미지에서 생성 된 판을 저장합니다.
이제는 임의의 이미지를 가져 와서 해당 이미지에서 샤시를 생성합니다.
지금은 테이블 A에서 레코드를 얻을 수 있도록 쿼리 할 수있는 방법은 20입니다.
나는 SQL의 바이너리 문자열에서 해밍 거리,그러나 그것을 알아낼 수는 없었습니다.
나는 이것을 달성하기 위해 함수를 만들어야한다는 것을 알아 냈지만 어떻게?
내 샤시 모두 Bigint에 있습니다. 예 : 7641692061273169067
처럼 쿼리 할 수 있도록 기능을 만들 수 있도록 도와주세요.SELECT product_id, HAMMING_DISTANCE(phash1, phash2) as hd
FROM A
WHERE hd < 20 ORDER BY hd ASC;
. 해결책
Hamming 거리가 두 해시 사이의 다른 비트의 카운트 일뿐입니다.첫 번째 XOR 두 해시는 이진 수의 수를 얻습니다.
SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;
. 제휴하지 않습니다 StackOverflow