34
34
35
35
-- halfvec
36
36
37
- local halfvec_mt = {
38
- pgmoon_serialize = function (v )
39
- return 0 , halfvec_serialize (v )
40
- end
41
- }
42
-
43
- function pgvector .halfvec (v )
44
- local vec = {}
45
- for _ , x in ipairs (v ) do
46
- table.insert (vec , x )
47
- end
48
- return setmetatable (vec , halfvec_mt )
49
- end
50
-
51
- function halfvec_serialize (v )
37
+ local function halfvec_serialize (v )
52
38
for _ , v in ipairs (v ) do
53
39
assert (type (v ) == " number" )
54
40
end
55
41
return " [" .. table.concat (v , " ," ) .. " ]"
56
42
end
57
43
58
- function halfvec_deserialize (v )
44
+ local function halfvec_deserialize (v )
59
45
local vec = {}
60
46
for x in string.gmatch (string.sub (v , 2 , - 2 ), " [^,]+" ) do
61
47
table.insert (vec , tonumber (x ))
@@ -64,37 +50,31 @@ function halfvec_deserialize(v)
64
50
return setmetatable (vec , halfvec_mt )
65
51
end
66
52
67
- -- sparsevec
68
-
69
- local sparsevec_mt = {
53
+ local halfvec_mt = {
70
54
pgmoon_serialize = function (v )
71
- return 0 , sparsevec_serialize (v )
55
+ return 0 , halfvec_serialize (v )
72
56
end
73
57
}
74
58
75
- function pgvector .sparsevec ( elements , dim )
76
- for k , v in pairs ( elements ) do
77
- assert ( type ( k ) == " number " )
78
- assert ( type ( v ) == " number " )
59
+ function pgvector .halfvec ( v )
60
+ local vec = {}
61
+ for _ , x in ipairs ( v ) do
62
+ table.insert ( vec , x )
79
63
end
80
- assert (type (dim ) == " number" )
81
-
82
- local vec = {
83
- elements = elements ,
84
- dim = dim
85
- }
86
- return setmetatable (vec , sparsevec_mt )
64
+ return setmetatable (vec , halfvec_mt )
87
65
end
88
66
89
- function sparsevec_serialize (vec )
67
+ -- sparsevec
68
+
69
+ local function sparsevec_serialize (vec )
90
70
local elements = {}
91
71
for i , v in pairs (vec [" elements" ]) do
92
72
table.insert (elements , tonumber (i ) .. " :" .. tonumber (v ))
93
73
end
94
74
return " {" .. table.concat (elements , " ," ) .. " }/" .. tonumber (vec [" dim" ])
95
75
end
96
76
97
- function sparsevec_deserialize (v )
77
+ local function sparsevec_deserialize (v )
98
78
local m = string.gmatch (v , " [^/]+" )
99
79
local elements = {}
100
80
for e in string.gmatch (string.sub (m (), 2 , - 2 ), " [^,]+" ) do
@@ -110,6 +90,26 @@ function sparsevec_deserialize(v)
110
90
return setmetatable (vec , sparsevec_mt )
111
91
end
112
92
93
+ local sparsevec_mt = {
94
+ pgmoon_serialize = function (v )
95
+ return 0 , sparsevec_serialize (v )
96
+ end
97
+ }
98
+
99
+ function pgvector .sparsevec (elements , dim )
100
+ for k , v in pairs (elements ) do
101
+ assert (type (k ) == " number" )
102
+ assert (type (v ) == " number" )
103
+ end
104
+ assert (type (dim ) == " number" )
105
+
106
+ local vec = {
107
+ elements = elements ,
108
+ dim = dim
109
+ }
110
+ return setmetatable (vec , sparsevec_mt )
111
+ end
112
+
113
113
-- register
114
114
115
115
function pgvector .setup_vector (pg )
0 commit comments