https://github.com/palestamp/hamming_distance
Hamming distance extension for Postgres.
https://github.com/palestamp/hamming_distance
c hamming-distance pgsql postgresql
Last synced: 4 months ago
JSON representation
Hamming distance extension for Postgres.
- Host: GitHub
- URL: https://github.com/palestamp/hamming_distance
- Owner: palestamp
- License: mit
- Created: 2016-08-23T11:59:08.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-07-04T22:26:36.000Z (over 8 years ago)
- Last Synced: 2025-02-01T02:41:22.791Z (about 1 year ago)
- Topics: c, hamming-distance, pgsql, postgresql
- Language: C
- Homepage:
- Size: 4.88 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Hex-Pair Hamming Distance Functions
===================================
This extension provides four functions to work with hex representation of
feature vector.
Every function asserts that both arguments have the same length.
### hamming_distance(varchar, varchar) RETURNS int (IMMUTABLE STRICT)
Computes absolute hamming distance between to FVs
SELECT hamming_distance('1d3f', '1110');
hamming_distance
------------------
7
(1 row)
This expands as
a = '1d3f' -> 0001 1101 0011 1111
b = '1110' -> 0001 0001 0001 0000
c = a ^ b -> 0000 1100 0010 1111
popcount(c) -> 0 + 2 + 1 + 4 = 7
### hamming_similarity(varchar, varchar) RETURNS int (IMMUTABLE STRICT)
SELECT hamming_similarity('1d3f', '1110');
hamming_similarity
--------------------
9
(1 row)
Can be defined as
HAMMING_SIMILARITY = len(a) * 4 - hamming_distance(a, b);
### hamming_distance_normalized(varchar, varchar) RETURNS float (IMMUTABLE STRICT)
SELECT hamming_distance_normalized('1d3f', '1110');
hamming_distance_normalized
-----------------------------
0.4375
(1 row)
Can be defined as
HAMMING_DISTANCE_NORM = hamming_distance(a, b) / len(a) * 4;
### hamming_similarity_normalized(varchar, varchar) RETURNS float (IMMUTABLE STRICT)
SELECT hamming_similarity_normalized('1d3f', '1110');
hamming_similarity_normalized
-------------------------------
0.5625
(1 row)
Can be defined as
HAMMING_SIMILARITY_NORM = hamming_similarity(a, b) / len(a) * 4;
Installation
============
cd .../hamming_distance
sudo make install
Running tests
=============
make installcheck