mirror of
https://github.com/pgvector/pgvector.git
synced 2026-06-06 14:01:31 +08:00
654 lines
14 KiB
Plaintext
654 lines
14 KiB
Plaintext
SELECT '{1:1.5,3:3.5}/5'::sparsevec;
|
|
sparsevec
|
|
-----------------
|
|
{1:1.5,3:3.5}/5
|
|
(1 row)
|
|
|
|
SELECT '{1:-2,3:-4}/5'::sparsevec;
|
|
sparsevec
|
|
---------------
|
|
{1:-2,3:-4}/5
|
|
(1 row)
|
|
|
|
SELECT '{1:2.,3:4.}/5'::sparsevec;
|
|
sparsevec
|
|
-------------
|
|
{1:2,3:4}/5
|
|
(1 row)
|
|
|
|
SELECT ' { 1 : 1.5 , 3 : 3.5 } / 5 '::sparsevec;
|
|
sparsevec
|
|
-----------------
|
|
{1:1.5,3:3.5}/5
|
|
(1 row)
|
|
|
|
SELECT '{1:1.23456}/1'::sparsevec;
|
|
sparsevec
|
|
---------------
|
|
{1:1.23456}/1
|
|
(1 row)
|
|
|
|
SELECT '{1:hello,2:1}/2'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{1:hello,2:1}/2"
|
|
LINE 1: SELECT '{1:hello,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:NaN,2:1}/2'::sparsevec;
|
|
ERROR: NaN not allowed in sparsevec
|
|
LINE 1: SELECT '{1:NaN,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:Infinity,2:1}/2'::sparsevec;
|
|
ERROR: infinite value not allowed in sparsevec
|
|
LINE 1: SELECT '{1:Infinity,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:-Infinity,2:1}/2'::sparsevec;
|
|
ERROR: infinite value not allowed in sparsevec
|
|
LINE 1: SELECT '{1:-Infinity,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:1.5e38,2:-1.5e38}/2'::sparsevec;
|
|
sparsevec
|
|
--------------------------
|
|
{1:1.5e+38,2:-1.5e+38}/2
|
|
(1 row)
|
|
|
|
SELECT '{1:1.5e+38,2:-1.5e+38}/2'::sparsevec;
|
|
sparsevec
|
|
--------------------------
|
|
{1:1.5e+38,2:-1.5e+38}/2
|
|
(1 row)
|
|
|
|
SELECT '{1:1.5e-38,2:-1.5e-38}/2'::sparsevec;
|
|
sparsevec
|
|
--------------------------
|
|
{1:1.5e-38,2:-1.5e-38}/2
|
|
(1 row)
|
|
|
|
SELECT '{1:4e38,2:1}/2'::sparsevec;
|
|
ERROR: "4e38" is out of range for type sparsevec
|
|
LINE 1: SELECT '{1:4e38,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:-4e38,2:1}/2'::sparsevec;
|
|
ERROR: "-4e38" is out of range for type sparsevec
|
|
LINE 1: SELECT '{1:-4e38,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:1e-46,2:1}/2'::sparsevec;
|
|
ERROR: "1e-46" is out of range for type sparsevec
|
|
LINE 1: SELECT '{1:1e-46,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:-1e-46,2:1}/2'::sparsevec;
|
|
ERROR: "-1e-46" is out of range for type sparsevec
|
|
LINE 1: SELECT '{1:-1e-46,2:1}/2'::sparsevec;
|
|
^
|
|
SELECT ''::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: ""
|
|
LINE 1: SELECT ''::sparsevec;
|
|
^
|
|
DETAIL: Vector contents must start with "{".
|
|
SELECT '{'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{"
|
|
LINE 1: SELECT '{'::sparsevec;
|
|
^
|
|
SELECT '{ '::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{ "
|
|
LINE 1: SELECT '{ '::sparsevec;
|
|
^
|
|
SELECT '{:'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{:"
|
|
LINE 1: SELECT '{:'::sparsevec;
|
|
^
|
|
SELECT '{,'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{,"
|
|
LINE 1: SELECT '{,'::sparsevec;
|
|
^
|
|
SELECT '{}'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{}"
|
|
LINE 1: SELECT '{}'::sparsevec;
|
|
^
|
|
DETAIL: Unexpected end of input.
|
|
SELECT '{}/'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{}/"
|
|
LINE 1: SELECT '{}/'::sparsevec;
|
|
^
|
|
SELECT '{}/1'::sparsevec;
|
|
sparsevec
|
|
-----------
|
|
{}/1
|
|
(1 row)
|
|
|
|
SELECT '{}/1a'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{}/1a"
|
|
LINE 1: SELECT '{}/1a'::sparsevec;
|
|
^
|
|
DETAIL: Junk after closing.
|
|
SELECT '{ }/1'::sparsevec;
|
|
sparsevec
|
|
-----------
|
|
{}/1
|
|
(1 row)
|
|
|
|
SELECT '{:}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{:}/1"
|
|
LINE 1: SELECT '{:}/1'::sparsevec;
|
|
^
|
|
SELECT '{,}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{,}/1"
|
|
LINE 1: SELECT '{,}/1'::sparsevec;
|
|
^
|
|
SELECT '{1,}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{1,}/1"
|
|
LINE 1: SELECT '{1,}/1'::sparsevec;
|
|
^
|
|
SELECT '{:1}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{:1}/1"
|
|
LINE 1: SELECT '{:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{1:}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{1:}/1"
|
|
LINE 1: SELECT '{1:}/1'::sparsevec;
|
|
^
|
|
SELECT '{1a:1}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{1a:1}/1"
|
|
LINE 1: SELECT '{1a:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{1:1a}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{1:1a}/1"
|
|
LINE 1: SELECT '{1:1a}/1'::sparsevec;
|
|
^
|
|
SELECT '{1:1,}/1'::sparsevec;
|
|
ERROR: invalid input syntax for type sparsevec: "{1:1,}/1"
|
|
LINE 1: SELECT '{1:1,}/1'::sparsevec;
|
|
^
|
|
SELECT '{1:0,2:1,3:0}/3'::sparsevec;
|
|
sparsevec
|
|
-----------
|
|
{2:1}/3
|
|
(1 row)
|
|
|
|
SELECT '{2:1,1:1}/2'::sparsevec;
|
|
sparsevec
|
|
-------------
|
|
{1:1,2:1}/2
|
|
(1 row)
|
|
|
|
SELECT '{1:1,1:1}/2'::sparsevec;
|
|
ERROR: sparsevec indices must not contain duplicates
|
|
LINE 1: SELECT '{1:1,1:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{1:1,2:1,1:1}/2'::sparsevec;
|
|
ERROR: sparsevec indices must not contain duplicates
|
|
LINE 1: SELECT '{1:1,2:1,1:1}/2'::sparsevec;
|
|
^
|
|
SELECT '{}/5'::sparsevec;
|
|
sparsevec
|
|
-----------
|
|
{}/5
|
|
(1 row)
|
|
|
|
SELECT '{}/-1'::sparsevec;
|
|
ERROR: sparsevec must have at least 1 dimension
|
|
LINE 1: SELECT '{}/-1'::sparsevec;
|
|
^
|
|
SELECT '{}/1000000001'::sparsevec;
|
|
ERROR: sparsevec cannot have more than 1000000000 dimensions
|
|
LINE 1: SELECT '{}/1000000001'::sparsevec;
|
|
^
|
|
SELECT '{}/2147483648'::sparsevec;
|
|
ERROR: sparsevec cannot have more than 1000000000 dimensions
|
|
LINE 1: SELECT '{}/2147483648'::sparsevec;
|
|
^
|
|
SELECT '{}/-2147483649'::sparsevec;
|
|
ERROR: sparsevec must have at least 1 dimension
|
|
LINE 1: SELECT '{}/-2147483649'::sparsevec;
|
|
^
|
|
SELECT '{}/9223372036854775808'::sparsevec;
|
|
ERROR: sparsevec cannot have more than 1000000000 dimensions
|
|
LINE 1: SELECT '{}/9223372036854775808'::sparsevec;
|
|
^
|
|
SELECT '{}/-9223372036854775809'::sparsevec;
|
|
ERROR: sparsevec must have at least 1 dimension
|
|
LINE 1: SELECT '{}/-9223372036854775809'::sparsevec;
|
|
^
|
|
SELECT '{2147483647:1}/1'::sparsevec;
|
|
ERROR: sparsevec index out of bounds
|
|
LINE 1: SELECT '{2147483647:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{2147483648:1}/1'::sparsevec;
|
|
ERROR: sparsevec index out of bounds
|
|
LINE 1: SELECT '{2147483648:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{-2147483648:1}/1'::sparsevec;
|
|
ERROR: sparsevec index out of bounds
|
|
LINE 1: SELECT '{-2147483648:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{-2147483649:1}/1'::sparsevec;
|
|
ERROR: sparsevec index out of bounds
|
|
LINE 1: SELECT '{-2147483649:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{0:1}/1'::sparsevec;
|
|
ERROR: sparsevec index out of bounds
|
|
LINE 1: SELECT '{0:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{2:1}/1'::sparsevec;
|
|
ERROR: sparsevec index out of bounds
|
|
LINE 1: SELECT '{2:1}/1'::sparsevec;
|
|
^
|
|
SELECT '{}/3'::sparsevec(3);
|
|
sparsevec
|
|
-----------
|
|
{}/3
|
|
(1 row)
|
|
|
|
SELECT '{}/3'::sparsevec(2);
|
|
ERROR: expected 2 dimensions, not 3
|
|
SELECT '{}/3'::sparsevec(3, 2);
|
|
ERROR: invalid type modifier
|
|
LINE 1: SELECT '{}/3'::sparsevec(3, 2);
|
|
^
|
|
SELECT '{}/3'::sparsevec('a');
|
|
ERROR: invalid input syntax for type integer: "a"
|
|
LINE 1: SELECT '{}/3'::sparsevec('a');
|
|
^
|
|
SELECT '{}/3'::sparsevec(0);
|
|
ERROR: dimensions for type sparsevec must be at least 1
|
|
LINE 1: SELECT '{}/3'::sparsevec(0);
|
|
^
|
|
SELECT '{}/3'::sparsevec(1000000001);
|
|
ERROR: dimensions for type sparsevec cannot exceed 1000000000
|
|
LINE 1: SELECT '{}/3'::sparsevec(1000000001);
|
|
^
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec < '{1:1,2:2,3:3}/3';
|
|
?column?
|
|
----------
|
|
f
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec < '{1:1,2:2}/2';
|
|
?column?
|
|
----------
|
|
f
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec <= '{1:1,2:2,3:3}/3';
|
|
?column?
|
|
----------
|
|
t
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec <= '{1:1,2:2}/2';
|
|
?column?
|
|
----------
|
|
f
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec = '{1:1,2:2,3:3}/3';
|
|
?column?
|
|
----------
|
|
t
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec = '{1:1,2:2}/2';
|
|
?column?
|
|
----------
|
|
f
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec != '{1:1,2:2,3:3}/3';
|
|
?column?
|
|
----------
|
|
f
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec != '{1:1,2:2}/2';
|
|
?column?
|
|
----------
|
|
t
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec >= '{1:1,2:2,3:3}/3';
|
|
?column?
|
|
----------
|
|
t
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec >= '{1:1,2:2}/2';
|
|
?column?
|
|
----------
|
|
t
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec > '{1:1,2:2,3:3}/3';
|
|
?column?
|
|
----------
|
|
f
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2,3:3}/3'::sparsevec > '{1:1,2:2}/2';
|
|
?column?
|
|
----------
|
|
t
|
|
(1 row)
|
|
|
|
SELECT sparsevec_cmp('{1:1,2:2,3:3}/3', '{1:1,2:2,3:3}/3');
|
|
sparsevec_cmp
|
|
---------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT sparsevec_cmp('{1:1,2:2,3:3}/3', '{}/3');
|
|
sparsevec_cmp
|
|
---------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT sparsevec_cmp('{}/3', '{1:1,2:2,3:3}/3');
|
|
sparsevec_cmp
|
|
---------------
|
|
-1
|
|
(1 row)
|
|
|
|
SELECT sparsevec_cmp('{1:1,2:2}/2', '{1:1,2:2,3:3}/3');
|
|
sparsevec_cmp
|
|
---------------
|
|
-1
|
|
(1 row)
|
|
|
|
SELECT sparsevec_cmp('{1:1,2:2,3:3}/3', '{1:1,2:2}/2');
|
|
sparsevec_cmp
|
|
---------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT sparsevec_cmp('{1:1,2:2}/2', '{1:2,2:3,3:4}/3');
|
|
sparsevec_cmp
|
|
---------------
|
|
-1
|
|
(1 row)
|
|
|
|
SELECT sparsevec_cmp('{1:2,2:3}/2', '{1:1,2:2,3:3}/3');
|
|
sparsevec_cmp
|
|
---------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT round(l2_norm('{1:1,2:1}/2'::sparsevec)::numeric, 5);
|
|
round
|
|
---------
|
|
1.41421
|
|
(1 row)
|
|
|
|
SELECT l2_norm('{1:3,2:4}/2'::sparsevec);
|
|
l2_norm
|
|
---------
|
|
5
|
|
(1 row)
|
|
|
|
SELECT l2_norm('{2:1}/2'::sparsevec);
|
|
l2_norm
|
|
---------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT l2_norm('{1:3e37,2:4e37}/2'::sparsevec)::real;
|
|
l2_norm
|
|
---------
|
|
5e+37
|
|
(1 row)
|
|
|
|
SELECT l2_norm('{}/2'::sparsevec);
|
|
l2_norm
|
|
---------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT l2_norm('{1:2}/1'::sparsevec);
|
|
l2_norm
|
|
---------
|
|
2
|
|
(1 row)
|
|
|
|
SELECT l2_distance('{}/2'::sparsevec, '{1:3,2:4}/2');
|
|
l2_distance
|
|
-------------
|
|
5
|
|
(1 row)
|
|
|
|
SELECT l2_distance('{1:3}/2'::sparsevec, '{2:4}/2');
|
|
l2_distance
|
|
-------------
|
|
5
|
|
(1 row)
|
|
|
|
SELECT l2_distance('{2:4}/2'::sparsevec, '{1:3}/2');
|
|
l2_distance
|
|
-------------
|
|
5
|
|
(1 row)
|
|
|
|
SELECT l2_distance('{1:3,2:4}/2'::sparsevec, '{}/2');
|
|
l2_distance
|
|
-------------
|
|
5
|
|
(1 row)
|
|
|
|
SELECT l2_distance('{}/2'::sparsevec, '{2:1}/2');
|
|
l2_distance
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT '{}/2'::sparsevec <-> '{1:3,2:4}/2';
|
|
?column?
|
|
----------
|
|
5
|
|
(1 row)
|
|
|
|
SELECT inner_product('{1:1,2:2}/2'::sparsevec, '{1:2,2:4}/2');
|
|
inner_product
|
|
---------------
|
|
10
|
|
(1 row)
|
|
|
|
SELECT inner_product('{1:1,2:2}/2'::sparsevec, '{1:3}/1');
|
|
ERROR: different sparsevec dimensions 2 and 1
|
|
SELECT inner_product('{1:1,3:3}/4'::sparsevec, '{2:2,4:4}/4');
|
|
inner_product
|
|
---------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT inner_product('{2:2,4:4}/4'::sparsevec, '{1:1,3:3}/4');
|
|
inner_product
|
|
---------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT inner_product('{1:1,3:3,5:5}/5'::sparsevec, '{2:4,3:6,4:8}/5');
|
|
inner_product
|
|
---------------
|
|
18
|
|
(1 row)
|
|
|
|
SELECT inner_product('{1:1}/2'::sparsevec, '{}/2');
|
|
inner_product
|
|
---------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT inner_product('{}/2'::sparsevec, '{1:1}/2');
|
|
inner_product
|
|
---------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT inner_product('{1:3e38}/1'::sparsevec, '{1:3e38}/1');
|
|
inner_product
|
|
---------------
|
|
Infinity
|
|
(1 row)
|
|
|
|
SELECT inner_product('{1:1,3:3,5:5}/5'::sparsevec, '{2:4,3:6,4:8}/5');
|
|
inner_product
|
|
---------------
|
|
18
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2}/2'::sparsevec <#> '{1:3,2:4}/2';
|
|
?column?
|
|
----------
|
|
-11
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:1,2:2}/2'::sparsevec, '{1:2,2:4}/2');
|
|
cosine_distance
|
|
-----------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:1,2:2}/2'::sparsevec, '{}/2');
|
|
cosine_distance
|
|
-----------------
|
|
NaN
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:1,2:1}/2'::sparsevec, '{1:1,2:1}/2');
|
|
cosine_distance
|
|
-----------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:1}/2'::sparsevec, '{2:2}/2');
|
|
cosine_distance
|
|
-----------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:1,2:1}/2'::sparsevec, '{1:-1,2:-1}/2');
|
|
cosine_distance
|
|
-----------------
|
|
2
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:2}/2'::sparsevec, '{2:2}/2');
|
|
cosine_distance
|
|
-----------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{2:2}/2'::sparsevec, '{1:2}/2');
|
|
cosine_distance
|
|
-----------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:1,2:2}/2'::sparsevec, '{1:3}/1');
|
|
ERROR: different sparsevec dimensions 2 and 1
|
|
SELECT cosine_distance('{1:1,2:1}/2'::sparsevec, '{1:1.1,2:1.1}/2');
|
|
cosine_distance
|
|
-----------------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:1,2:1}/2'::sparsevec, '{1:-1.1,2:-1.1}/2');
|
|
cosine_distance
|
|
-----------------
|
|
2
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{1:3e38}/1'::sparsevec, '{1:3e38}/1');
|
|
cosine_distance
|
|
-----------------
|
|
NaN
|
|
(1 row)
|
|
|
|
SELECT cosine_distance('{}/1'::sparsevec, '{}/1');
|
|
cosine_distance
|
|
-----------------
|
|
NaN
|
|
(1 row)
|
|
|
|
SELECT '{1:1,2:2}/2'::sparsevec <=> '{1:2,2:4}/2';
|
|
?column?
|
|
----------
|
|
0
|
|
(1 row)
|
|
|
|
SELECT l1_distance('{}/2'::sparsevec, '{1:3,2:4}/2');
|
|
l1_distance
|
|
-------------
|
|
7
|
|
(1 row)
|
|
|
|
SELECT l1_distance('{}/2'::sparsevec, '{2:1}/2');
|
|
l1_distance
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT l1_distance('{1:1,2:2}/2'::sparsevec, '{1:3}/1');
|
|
ERROR: different sparsevec dimensions 2 and 1
|
|
SELECT l1_distance('{1:3e38}/1'::sparsevec, '{1:-3e38}/1');
|
|
l1_distance
|
|
-------------
|
|
Infinity
|
|
(1 row)
|
|
|
|
SELECT l1_distance('{1:1,3:3,5:5,7:7}/8'::sparsevec, '{2:2,4:4,6:6,8:8}/8');
|
|
l1_distance
|
|
-------------
|
|
36
|
|
(1 row)
|
|
|
|
SELECT l1_distance('{1:1,3:3,5:5,7:7,9:9}/9'::sparsevec, '{2:2,4:4,6:6,8:8}/9');
|
|
l1_distance
|
|
-------------
|
|
45
|
|
(1 row)
|
|
|
|
SELECT '{}/2'::sparsevec <+> '{1:3,2:4}/2';
|
|
?column?
|
|
----------
|
|
7
|
|
(1 row)
|
|
|
|
SELECT l2_normalize('{1:3,2:4}/2'::sparsevec);
|
|
l2_normalize
|
|
-----------------
|
|
{1:0.6,2:0.8}/2
|
|
(1 row)
|
|
|
|
SELECT l2_normalize('{1:3}/2'::sparsevec);
|
|
l2_normalize
|
|
--------------
|
|
{1:1}/2
|
|
(1 row)
|
|
|
|
SELECT l2_normalize('{2:0.1}/2'::sparsevec);
|
|
l2_normalize
|
|
--------------
|
|
{2:1}/2
|
|
(1 row)
|
|
|
|
SELECT l2_normalize('{}/2'::sparsevec);
|
|
l2_normalize
|
|
--------------
|
|
{}/2
|
|
(1 row)
|
|
|
|
SELECT l2_normalize('{1:3e38}/1'::sparsevec);
|
|
l2_normalize
|
|
--------------
|
|
{1:1}/1
|
|
(1 row)
|
|
|
|
SELECT l2_normalize('{1:3e38,2:1e-37}/2'::sparsevec);
|
|
l2_normalize
|
|
--------------
|
|
{1:1}/2
|
|
(1 row)
|
|
|
|
SELECT l2_normalize('{2:3e37,4:3e-37,6:4e37,8:4e-37}/9'::sparsevec);
|
|
l2_normalize
|
|
-----------------
|
|
{2:0.6,6:0.8}/9
|
|
(1 row)
|
|
|