@ejfdelgado/ejflab-back 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/srv/MilvusSrv.mjs +83 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ejfdelgado/ejflab-back",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/ejfdelgado/ejflab-back.git"
package/srv/MilvusSrv.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import { MilvusClient, DataType } from "@zilliz/milvus2-sdk-node";
2
+ import { encode, decode } from "@msgpack/msgpack";
2
3
 
3
4
  export class MilvusSrv {
4
5
  // MilvusSrv.checkErrors(res);
@@ -149,4 +150,86 @@ export class MilvusSrv {
149
150
  };
150
151
  res.status(200).send(response);
151
152
  }
153
+ static async insert(req, res, next) {
154
+ console.log("Milvus insert...");
155
+ const { client } = MilvusSrv.connect();
156
+ let code = 200;
157
+ const response = {
158
+ status: "ok"
159
+ };
160
+ try {
161
+ // get the request
162
+ const buffer = req.body;
163
+ const decoded = decode(buffer);
164
+ const {
165
+ db_name,
166
+ collection_name,
167
+ data
168
+ } = decoded;
169
+ await MilvusSrv.useDatabase(client, db_name, false);
170
+ await client.insert({
171
+ collection_name: collection_name,
172
+ data: data
173
+ });
174
+ console.log("Milvus insert... OK");
175
+ } catch (err) {
176
+ console.log(err);
177
+ code = 500;
178
+ response.status = "error";
179
+ response.message = err.message;
180
+ } finally {
181
+ await client.closeConnection();
182
+ res.status(code).send(response);
183
+ }
184
+ }
185
+ static async search(req, res, next) {
186
+ const { client } = MilvusSrv.connect();
187
+ let code = 200;
188
+ const response = {
189
+ status: "ok"
190
+ };
191
+ try {
192
+ // get the request
193
+ const buffer = req.body;
194
+ const decoded = decode(buffer);
195
+ // Connect to database
196
+ const {
197
+ db_name,
198
+ collection_name,
199
+ embeed,
200
+ paging
201
+ } = decoded;
202
+ console.log(`Using database ${db_name}`);
203
+ await MilvusSrv.useDatabase(client, db_name, false);
204
+ const search_params = {
205
+ "metric_type": "IP",
206
+ "topk": paging['limit'],
207
+ "params": JSON.stringify({ nprobe: 1024 }),
208
+ };
209
+ const results = await client.search({
210
+ collection_name: collection_name,
211
+ data: [embeed],
212
+ limit: paging['limit'],
213
+ offset: paging['offset'],
214
+ consistency_level: "Strong",
215
+ search_params: search_params,
216
+ output_fields: ['id', 'document_id', 'face_path', 'millis', 'x1', 'y1', 'x2', 'y2', 'ref_id']
217
+ });
218
+ response.results = results.results.map((entity) => {
219
+ return {
220
+ id: entity.id,
221
+ distance: 0,
222
+ entity
223
+ };
224
+ });
225
+ } catch (err) {
226
+ console.log(err);
227
+ code = 500;
228
+ response.status = "error";
229
+ response.message = err.message;
230
+ } finally {
231
+ await client.closeConnection();
232
+ res.status(code).send(response);
233
+ }
234
+ }
152
235
  }