「template_phash」列を持つテーブル A があります。400K の画像から生成された phash を保存します。
次に、ランダムな画像を取得し、その画像から phash を生成します。
テーブル A から、ハミング距離の差がしきい値 (たとえば 20) 未満のレコードを取得できるようにクエリを実行するにはどうすればよいでしょうか。
SQL のバイナリ文字列のハミング距離を見たことがありますが、理解できませんでした。
これを達成するには関数を作成する必要があることがわかったと思いますが、どうすればよいですか?
私のphashは両方ともBigIntにあります。例:7641692061273169067
次のようにクエリできるように関数を作成するのを手伝ってください
SELECT product_id, HAMMING_DISTANCE(phash1, phash2) as hd
FROM A
WHERE hd < 20 ORDER BY hd ASC;