meta.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  1. const COS = require('../lib/cos-wx-sdk-v5');
  2. const config = require('../config');
  3. const { cos, requestCallback } = require('../tools');
  4. const metaDao = {
  5. '创建数据集 createDataset': createDataset,
  6. '更新数据集 updateDataset': updateDataset,
  7. '删除数据集 deleteDataset': deleteDataset,
  8. '列出数据集 describeDatasets': describeDatasets,
  9. '查询数据集 describeDataset': describeDataset,
  10. '绑定存储桶与数据集 createDatasetBinding': createDatasetBinding,
  11. '解绑存储桶与数据集 deleteDatasetBinding': deleteDatasetBinding,
  12. '查询数据集与存储桶的绑定关系 describeDatasetBinding': describeDatasetBinding,
  13. '查询绑定关系列表 describeDatasetBindings': describeDatasetBindings,
  14. '创建元数据索引 createFileMetaIndex': createFileMetaIndex,
  15. '删除元数据索引 deleteFileMetaIndex': deleteFileMetaIndex,
  16. '查询元数据索引 describeFileMetaIndex': describeFileMetaIndex,
  17. '更新元数据索引 updateFileMetaIndex': updateFileMetaIndex,
  18. '简单查询 datasetSimpleQuery': datasetSimpleQuery,
  19. '人脸搜索 datasetFaceSearch': datasetFaceSearch,
  20. '图像检索 searchImage': searchImage,
  21. };
  22. /**
  23. * 元数据demo集合
  24. */
  25. // 从 Bucket 里拆出 AppId
  26. const AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);
  27. // 创建数据集
  28. function createDataset() {
  29. const key = 'dataset'; // 固定值
  30. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  31. const url = `https://${host}/${key}`;
  32. const body = JSON.stringify({
  33. // 数据集名称,同一个账户下唯一。命名规则如下: - 长度为1~128字符 - 只能包含英文字母,数字,短划线(-)和下划线() - 必须以英文字母和下划线()开头;是否必传:是
  34. DatasetName: 'test-dataset-base',
  35. // 数据集描述信息。长度为1~256个英文或中文字符,默认值为空。;是否必传:否
  36. Description: 'test-dataset-desc',
  37. // 指模板,在建立元数据索引时,后端将根据模板来决定收集哪些元数据。每个模板都包含一个或多个算子,不同的算子表示不同的元数据。目前支持的模板: Official:DefaultEmptyId:默认为空的模板,表示不进行元数据的采集。 Official:COSBasicMeta:基础信息模板,包含 COS 文件基础元信息算子,表示采集 COS 文件的名称、类型、ACL等基础元信息数据。 Official:FaceSearch:人脸检索模板,包含人脸检索、COS 文件基础元信息算子。Official:ImageSearch:图像检索模板,包含图像检索、COS 文件基础元信息算子。;是否必传:否
  38. TemplateId: 'Official:COSBasicMeta',
  39. });
  40. cos.request(
  41. {
  42. Method: 'POST', // 固定值,必须
  43. Key: key, // 必须
  44. Url: url, // 请求的url,必须
  45. Body: body, // 请求体参数,必须
  46. Headers: {
  47. // 设置请求体为 json,固定值,必须
  48. 'Content-Type': 'application/json',
  49. // 设置响应体为json,固定值,必须
  50. Accept: 'application/json',
  51. },
  52. },
  53. function (err, data) {
  54. if (err) {
  55. // 处理请求失败
  56. console.log(err);
  57. } else {
  58. // 处理请求成功
  59. console.log(data);
  60. }
  61. }
  62. );
  63. }
  64. // 更新数据集
  65. function updateDataset() {
  66. const key = 'dataset'; // 固定值
  67. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  68. const url = `https://${host}/${key}`;
  69. const body = JSON.stringify({
  70. // 数据集名称,同一个账户下唯一。;是否必传:是
  71. DatasetName: 'test-dataset-base',
  72. // 数据集描述信息。长度为1~256个英文或中文字符,默认值为空。;是否必传:否
  73. Description: 'test-dataset-base-desc1',
  74. // 该参数表示模板,在建立元数据索引时,后端将根据模板来决定收集哪些元数据。每个模板都包含一个或多个算子,不同的算子表示不同的元数据。目前支持的模板: Official:Empty:默认为空的模板,表示不进行元数据的采集。 Official:COSBasicMeta:基础信息模板,包含COS文件基础元信息算子,表示采集cos文件的名称、类型、acl等基础元信息数据。;是否必传:否
  75. TemplateId: 'Official:COSBasicMeta',
  76. });
  77. cos.request(
  78. {
  79. Method: 'PUT', // 固定值,必须
  80. Key: key, // 必须
  81. Url: url, // 请求的url,必须
  82. Body: body, // 请求体参数,必须
  83. Headers: {
  84. // 设置请求体为 json,固定值,必须
  85. 'Content-Type': 'application/json',
  86. // 设置响应体为json,固定值,必须
  87. Accept: 'application/json',
  88. },
  89. },
  90. function (err, data) {
  91. if (err) {
  92. // 处理请求失败
  93. console.log(err);
  94. } else {
  95. // 处理请求成功
  96. console.log(data);
  97. }
  98. }
  99. );
  100. }
  101. // 删除数据集
  102. function deleteDataset() {
  103. const key = 'dataset'; // 固定值
  104. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  105. const url = `https://${host}/${key}`;
  106. const body = JSON.stringify({
  107. // 数据集名称,同一个账户下唯一。;是否必传:是
  108. DatasetName: 'test-dataset-base',
  109. });
  110. cos.request(
  111. {
  112. Method: 'DELETE', // 固定值,必须
  113. Key: key, // 必须
  114. Url: url, // 请求的url,必须
  115. Body: body, // 请求体参数,必须
  116. Headers: {
  117. // 设置请求体为 json,固定值,必须
  118. 'Content-Type': 'application/json',
  119. // 设置响应体为json,固定值,必须
  120. Accept: 'application/json',
  121. },
  122. },
  123. function (err, data) {
  124. if (err) {
  125. // 处理请求失败
  126. console.log(err);
  127. } else {
  128. // 处理请求成功
  129. console.log(data);
  130. }
  131. }
  132. );
  133. }
  134. // 列出数据集
  135. function describeDatasets() {
  136. const key = 'datasets'; // 固定值
  137. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  138. const url = `https://${host}/${key}`;
  139. cos.request(
  140. {
  141. Method: 'GET', // 固定值,必须
  142. Key: key, // 必须
  143. Url: url, // 请求的url,必须
  144. Query: {
  145. // 本次返回数据集的最大个数,取值范围为0~200。不设置此参数或者设置为0时,则默认值为100。;是否必传:否
  146. maxresults: 100,
  147. // 翻页标记。当文件总数大于设置的MaxResults时,用于翻页的Token。从NextToken开始按字典序返回文件信息列表。填写上次查询返回的值,首次使用时填写为空。;是否必传:否
  148. // nexttoken: '',
  149. // 数据集名称前缀。;是否必传:否
  150. // prefix: 'test',
  151. },
  152. Headers: {
  153. // 设置响应体为json,固定值,必须
  154. Accept: 'application/json',
  155. },
  156. },
  157. function (err, data) {
  158. if (err) {
  159. // 处理请求失败
  160. console.log(err);
  161. } else {
  162. // 处理请求成功
  163. console.log(data);
  164. }
  165. }
  166. );
  167. }
  168. // 查询数据集
  169. function describeDataset() {
  170. const key = 'dataset'; // 固定值
  171. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  172. const url = `https://${host}/${key}`;
  173. cos.request(
  174. {
  175. Method: 'GET', // 固定值,必须
  176. Key: key, // 必须
  177. Url: url, // 请求的url,必须
  178. Query: {
  179. // 数据集名称,同一个账户下唯一。;是否必传:是
  180. datasetname: 'test-dataset-base',
  181. // 是否需要实时统计数据集中文件相关信息。有效值: false:不统计,返回的文件的总大小、数量信息可能不正确也可能都为0。 true:需要统计,返回数据集中当前的文件的总大小、数量信息。 默认值为false。;是否必传:否
  182. statistics: false,
  183. },
  184. Headers: {
  185. // 设置请求体为 json,固定值,必须
  186. 'Content-Type': 'application/json',
  187. // 设置响应体为json,固定值,必须
  188. Accept: 'application/json',
  189. },
  190. },
  191. function (err, data) {
  192. if (err) {
  193. // 处理请求失败
  194. console.log(err);
  195. } else {
  196. // 处理请求成功
  197. console.log(data);
  198. }
  199. }
  200. );
  201. }
  202. // 绑定存储桶与数据集
  203. function createDatasetBinding() {
  204. const key = 'datasetbinding'; // 固定值
  205. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  206. const url = `https://${host}/${key}`;
  207. const body = JSON.stringify({
  208. // 数据集名称,同一个账户下唯一。;是否必传:是
  209. DatasetName: 'test-dataset-imagesearch2',
  210. // 资源标识字段,表示需要与数据集绑定的资源,当前仅支持COS存储桶,字段规则:cos://,其中BucketName表示COS存储桶名称,例如:cos://examplebucket-1250000000;是否必传:是
  211. URI: `cos://${config.Bucket}`,
  212. });
  213. cos.request(
  214. {
  215. Method: 'POST', // 固定值,必须
  216. Key: key, // 必须
  217. Url: url, // 请求的url,必须
  218. Body: body, // 请求体参数,必须
  219. Headers: {
  220. // 设置请求体为 json,固定值,必须
  221. 'Content-Type': 'application/json',
  222. // 设置响应体为json,固定值,必须
  223. Accept: 'application/json',
  224. },
  225. },
  226. function (err, data) {
  227. if (err) {
  228. // 处理请求失败
  229. console.log(err);
  230. } else {
  231. // 处理请求成功
  232. console.log(data);
  233. }
  234. }
  235. );
  236. }
  237. // 解绑存储桶与数据集
  238. function deleteDatasetBinding() {
  239. const key = 'datasetbinding'; // 固定值
  240. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  241. const url = `https://${host}/${key}`;
  242. const body = JSON.stringify({
  243. // 数据集名称,同一个账户下唯一。;是否必传:是
  244. DatasetName: 'test-dataset-imagesearch2',
  245. // 资源标识字段,表示需要与数据集绑定的资源,当前仅支持COS存储桶,字段规则:cos://,其中BucketName表示COS存储桶名称,例如:cos://examplebucket-1250000000;是否必传:是
  246. URI: `cos://${config.Bucket}`,
  247. });
  248. cos.request(
  249. {
  250. Method: 'DELETE', // 固定值,必须
  251. Key: key, // 必须
  252. Url: url, // 请求的url,必须
  253. Body: body, // 请求体参数,必须
  254. Headers: {
  255. // 设置请求体为 json,固定值,必须
  256. 'Content-Type': 'application/json',
  257. // 设置响应体为json,固定值,必须
  258. Accept: 'application/json',
  259. },
  260. },
  261. function (err, data) {
  262. if (err) {
  263. // 处理请求失败
  264. console.log(err);
  265. } else {
  266. // 处理请求成功
  267. console.log(data);
  268. }
  269. }
  270. );
  271. }
  272. // 查询数据集与存储桶的绑定关系
  273. function describeDatasetBinding() {
  274. const key = 'datasetbinding'; // 固定值
  275. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  276. const url = `https://${host}/${key}`;
  277. cos.request(
  278. {
  279. Method: 'GET', // 固定值,必须
  280. Key: key, // 必须
  281. Url: url, // 请求的url,必须
  282. Query: {
  283. // 数据集名称,同一个账户下唯一。;是否必传:是
  284. datasetname: 'test-dataset-imagesearch2',
  285. // 资源标识字段,表示需要与数据集绑定的资源,当前仅支持COS存储桶,字段规则:cos://,其中BucketName表示COS存储桶名称,例如(需要进行urlencode):cos%3A%2F%2Fexample-125000;是否必传:是
  286. uri: `cos://${config.Bucket}`,
  287. },
  288. Headers: {
  289. // 设置响应体为json,固定值,必须
  290. Accept: 'application/json',
  291. },
  292. },
  293. function (err, data) {
  294. if (err) {
  295. // 处理请求失败
  296. console.log(err);
  297. } else {
  298. // 处理请求成功
  299. console.log(data);
  300. }
  301. }
  302. );
  303. }
  304. // 查询绑定关系列表
  305. function describeDatasetBindings() {
  306. const key = 'datasetbindings'; // 固定值
  307. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  308. const url = `https://${host}/${key}`;
  309. cos.request(
  310. {
  311. Method: 'GET', // 固定值,必须
  312. Key: key, // 必须
  313. Url: url, // 请求的url,必须
  314. Query: {
  315. // 数据集名称,同一个账户下唯一。;是否必传:否
  316. datasetname: 'test-dataset-imagesearch2',
  317. // 返回绑定关系的最大个数,取值范围为0~200。不设置此参数或者设置为0时,则默认值为100。;是否必传:否
  318. maxresults: 100,
  319. // 当绑定关系总数大于设置的MaxResults时,用于翻页的token。从NextToken开始按字典序返回绑定关系信息列表。第一次调用此接口时,设置为空。;是否必传:是
  320. // nexttoken: '',
  321. },
  322. Headers: {
  323. // 设置响应体为json,固定值,必须
  324. Accept: 'application/json',
  325. },
  326. },
  327. function (err, data) {
  328. if (err) {
  329. // 处理请求失败
  330. console.log(err);
  331. } else {
  332. // 处理请求成功
  333. console.log(data);
  334. }
  335. }
  336. );
  337. }
  338. // 创建元数据索引
  339. function createFileMetaIndex() {
  340. const key = 'filemeta'; // 固定值
  341. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  342. const url = `https://${host}/${key}`;
  343. const body = JSON.stringify({
  344. // 数据集名称,同一个账户下唯一。;是否必传:是
  345. DatasetName: 'test-dataset-imagesearch2',
  346. // 元数据索引结果(以回调形式发送至您的回调地址,支持以 http:// 或者 https:// 开头的地址,例如: http://www.callback.com。;是否必传:否
  347. // Callback: 'http://www.callback.com',
  348. // 用于建立索引的文件信息。;是否必传:是
  349. File: {
  350. // 自定义ID。该文件索引到数据集后,作为该行元数据的属性存储,用于和您的业务系统进行关联、对应。您可以根据业务需求传入该值,例如将某个URI关联到您系统内的某个ID。推荐传入全局唯一的值。在查询时,该字段支持前缀查询和排序,详情请见字段和操作符的支持列表。 ;是否必传:否
  351. // CustomId: '001',
  352. // 自定义标签。您可以根据业务需要自定义添加标签键值对信息,用于在查询时可以据此为筛选项进行检索,详情请见字段和操作符的支持列表。 ;是否必传:否
  353. // CustomLabels: {"age":"18","level":"18"},
  354. // 可选项,文件媒体类型,枚举值: image:图片。 other:其他。 document:文档。 archive:压缩包。 video:视频。 audio:音频。 ;是否必传:否
  355. MediaType: 'image',
  356. // 可选项,文件内容类型(MIME Type),如image/jpeg。 ;是否必传:否
  357. ContentType: 'image/jpeg',
  358. // 资源标识字段,表示需要建立索引的文件地址,当前仅支持COS上的文件,字段规则:cos:///,其中BucketName表示COS存储桶名称,ObjectKey表示文件完整路径,例如:cos://examplebucket-1250000000/test1/img.jpg。 注意: 1、仅支持本账号内的COS文件 2、不支持HTTP开头的地址;是否必传:是
  359. URI: `cos://${config.Bucket}/ci/dog.jpeg`,
  360. // 输入图片中检索的人脸数量,默认值为20,最大值为20。(仅当数据集模板 ID 为 Official:FaceSearch 有效)。;是否必传:否
  361. // MaxFaceNum: 20,
  362. // 自定义人物属性(仅当数据集模板 ID 为 Official:FaceSearch 有效)。;是否必传:否
  363. // Persons: {
  364. // },
  365. },
  366. });
  367. cos.request(
  368. {
  369. Method: 'POST', // 固定值,必须
  370. Key: key, // 必须
  371. Url: url, // 请求的url,必须
  372. Body: body, // 请求体参数,必须
  373. Headers: {
  374. // 设置请求体为 json,固定值,必须
  375. 'Content-Type': 'application/json',
  376. // 设置响应体为json,固定值,必须
  377. Accept: 'application/json',
  378. },
  379. },
  380. function (err, data) {
  381. if (err) {
  382. // 处理请求失败
  383. console.log(err);
  384. } else {
  385. // 处理请求成功
  386. console.log(data);
  387. }
  388. }
  389. );
  390. }
  391. // 删除元数据索引
  392. function deleteFileMetaIndex() {
  393. const key = 'filemeta'; // 固定值
  394. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  395. const url = `https://${host}/${key}`;
  396. const body = JSON.stringify({
  397. // 数据集名称,同一个账户下唯一。;是否必传:是
  398. DatasetName: 'test-dataset-imagesearch2',
  399. // 资源标识字段,表示需要建立索引的文件地址。;是否必传:是
  400. URI: `cos://${config.Bucket}/1.png`,
  401. });
  402. cos.request(
  403. {
  404. Method: 'DELETE', // 固定值,必须
  405. Key: key, // 必须
  406. Url: url, // 请求的url,必须
  407. Body: body, // 请求体参数,必须
  408. Headers: {
  409. // 设置请求体为 json,固定值,必须
  410. 'Content-Type': 'application/json',
  411. // 设置响应体为json,固定值,必须
  412. Accept: 'application/json',
  413. },
  414. },
  415. function (err, data) {
  416. if (err) {
  417. // 处理请求失败
  418. console.log(err);
  419. } else {
  420. // 处理请求成功
  421. console.log(data);
  422. }
  423. }
  424. );
  425. }
  426. // 查询元数据索引
  427. function describeFileMetaIndex() {
  428. const key = 'filemeta'; // 固定值
  429. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  430. const url = `https://${host}/${key}`;
  431. cos.request(
  432. {
  433. Method: 'GET', // 固定值,必须
  434. Key: key, // 必须
  435. Url: url, // 请求的url,必须
  436. Query: {
  437. // 数据集名称,同一个账户下唯一。;是否必传:是
  438. datasetname: 'test-dataset-imagesearch2',
  439. // 资源标识字段,表示需要建立索引的文件地址,当前仅支持COS上的文件,字段规则:cos:///,其中BucketName表示COS存储桶名称,ObjectKey表示文件完整路径,例如:cos://examplebucket-1250000000/test1/img.jpg。 注意: 1、仅支持本账号内的COS文件 2、不支持HTTP开头的地址 3、需UrlEncode;是否必传:是
  440. uri: `cos://${config.Bucket}/ci/dog.jpeg`,
  441. },
  442. Headers: {
  443. // 设置响应体为json,固定值,必须
  444. Accept: 'application/json',
  445. },
  446. },
  447. function (err, data) {
  448. if (err) {
  449. // 处理请求失败
  450. console.log(err.message);
  451. } else {
  452. // 处理请求成功
  453. console.log(data);
  454. }
  455. }
  456. );
  457. }
  458. // 更新元数据索引
  459. function updateFileMetaIndex() {
  460. const key = 'filemeta'; // 固定值
  461. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  462. const url = `https://${host}/${key}`;
  463. const body = JSON.stringify({
  464. // 数据集名称,同一个账户下唯一。;是否必传:是
  465. DatasetName: 'test-dataset-imagesearch2',
  466. // 元数据索引结果(以回调形式发送至您的回调地址,支持以 http:// 或者 https:// 开头的地址,例如: http://www.callback.com;是否必传:是
  467. // Callback: 'http://www.callback.com',
  468. // 用于建立索引的文件信息。;是否必传:是
  469. File: {
  470. // 自定义ID。该文件索引到数据集后,作为该行元数据的属性存储,用于和您的业务系统进行关联、对应。您可以根据业务需求传入该值,例如将某个URI关联到您系统内的某个ID。推荐传入全局唯一的值。在查询时,该字段支持前缀查询和排序,详情请见字段和操作符的支持列表。 ;是否必传:否
  471. CustomId: '002',
  472. // 自定义标签。您可以根据业务需要自定义添加标签键值对信息,用于在查询时可以据此为筛选项进行检索,详情请见字段和操作符的支持列表。 ;是否必传:否
  473. // CustomLabels: { age: '18', level: '18' },
  474. // 可选项,文件媒体类型,枚举值: image:图片。 other:其他。 document:文档。 archive:压缩包。 video:视频。 audio:音频。 ;是否必传:否
  475. MediaType: 'image',
  476. // 可选项,文件内容类型(MIME Type),如image/jpeg。 ;是否必传:否
  477. ContentType: 'image/jpeg',
  478. // 资源标识字段,表示需要建立索引的文件地址,当前仅支持COS上的文件,字段规则:cos:///,其中BucketName表示COS存储桶名称,ObjectKey表示文件完整路径,例如:cos://examplebucket-1250000000/test1/img.jpg。 注意: 1、仅支持本账号内的COS文件 2、不支持HTTP开头的地址;是否必传:是
  479. URI: `cos://${config.Bucket}/ci/dog.jpeg`,
  480. // 自定义人物属性(仅当数据集模板 ID 为 Official:FaceSearch 有效)。;是否必传:否
  481. // Persons: {},
  482. },
  483. });
  484. cos.request(
  485. {
  486. Method: 'PUT', // 固定值,必须
  487. Key: key, // 必须
  488. Url: url, // 请求的url,必须
  489. Body: body, // 请求体参数,必须
  490. Headers: {
  491. // 设置请求体为 json,固定值,必须
  492. 'Content-Type': 'application/json',
  493. // 设置响应体为json,固定值,必须
  494. Accept: 'application/json',
  495. },
  496. },
  497. function (err, data) {
  498. if (err) {
  499. // 处理请求失败
  500. console.log(err);
  501. } else {
  502. // 处理请求成功
  503. console.log(data);
  504. }
  505. }
  506. );
  507. }
  508. // 简单查询
  509. function datasetSimpleQuery() {
  510. const key = 'datasetquery/simple'; // 固定值
  511. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  512. const url = `https://${host}/${key}`;
  513. const body = JSON.stringify({
  514. // 数据集名称,同一个账户下唯一。;是否必传:是
  515. DatasetName: 'test-dataset-base',
  516. // 简单查询参数条件,可自嵌套。;是否必传:否
  517. // Query: {
  518. // // 操作运算符。枚举值: not:逻辑非。 or:逻辑或。 and:逻辑与。 lt:小于。 lte:小于等于。 gt:大于。 gte:大于等于。 eq:等于。 exist:存在性查询。 prefix:前缀查询。 match-phrase:字符串匹配查询。 nested:字段为数组时,其中同一对象内逻辑条件查询。;是否必传:是
  519. // Operation: 'and',
  520. // // 子查询的结构体。 只有当Operations为逻辑运算符(and、or、not或nested)时,才能设置子查询条件。 在逻辑运算符为and/or/not时,其SubQueries内描述的所有条件需符合父级设置的and/or/not逻辑关系。 在逻辑运算符为nested时,其父级的Field必须为一个数组类的字段(如:Labels)。 子查询条件SubQueries组的Operation必须为and/or/not中的一个或多个,其Field必须为父级Field的子属性。;是否必传:否
  521. // SubQueries: [{
  522. // Operation: '',
  523. // Field: '',
  524. // }],
  525. // Field: '',
  526. // Value: '',
  527. // },
  528. // 返回文件元数据的最大个数,取值范围为0200。 使用聚合参数时,该值表示返回分组的最大个数,取值范围为02000。 不设置此参数或者设置为0时,则取默认值100。;是否必传:否
  529. MaxResults: 100,
  530. // 排序字段列表。请参考字段和操作符的支持列表。 多个排序字段可使用半角逗号(,)分隔,例如:Size,Filename。 最多可设置5个排序字段。 排序字段顺序即为排序优先级顺序。;是否必传:是
  531. // Sort: 'CustomId',
  532. // 排序字段的排序方式。取值如下: asc:升序; desc(默认):降序。 多个排序方式可使用半角逗号(,)分隔,例如:asc,desc。 排序方式不可多于排序字段,即参数Order的元素数量需小于等于参数Sort的元素数量。例如Sort取值为Size,Filename时,Order可取值为asc,desc或asc。 排序方式少于排序字段时,未排序的字段默认取值asc。例如Sort取值为Size,Filename,Order取值为asc时,Filename默认排序方式为asc,即升序排列;是否必传:是
  533. Order: 'desc',
  534. // 聚合字段信息列表。 当您使用聚合查询时,仅返回聚合结果,不再返回匹配到的元信息列表。;是否必传:否
  535. // Aggregations: {
  536. // Operation: '',
  537. // Field: ''
  538. // },
  539. });
  540. cos.request(
  541. {
  542. Method: 'POST', // 固定值,必须
  543. Key: key, // 必须
  544. Url: url, // 请求的url,必须
  545. Body: body, // 请求体参数,必须
  546. Headers: {
  547. // 设置请求体为 json,固定值,必须
  548. 'Content-Type': 'application/json',
  549. // 设置响应体为json,固定值,必须
  550. Accept: 'application/json',
  551. },
  552. },
  553. function (err, data) {
  554. if (err) {
  555. // 处理请求失败
  556. console.log(err);
  557. } else {
  558. // 处理请求成功
  559. console.log(data);
  560. }
  561. }
  562. );
  563. }
  564. // 人脸搜索
  565. function datasetFaceSearch() {
  566. const key = 'datasetquery/facesearch'; // 固定值
  567. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  568. const url = `https://${host}/${key}`;
  569. const body = JSON.stringify({
  570. // 数据集名称,同一个账户下唯一。;是否必传:是
  571. DatasetName: 'test-dataset-facesearch',
  572. // 资源标识字段,表示需要建立索引的文件地址。;是否必传:是
  573. URI: `cos://${config.Bucket}/ci/1.jpg`,
  574. // 输入图片中检索的人脸数量,默认值为1(传0或不传采用默认值),最大值为10。;是否必传:否
  575. MaxFaceNum: 1,
  576. // 检索的每张人脸返回相关人脸数量,默认值为10,最大值为100。;是否必传:否
  577. Limit: 10,
  578. // 出参 Score 中,只有超过 MatchThreshold 值的结果才会返回。范围:1-100,默认值为0,推荐值为80。;是否必传:否
  579. MatchThreshold: 10,
  580. });
  581. cos.request(
  582. {
  583. Method: 'POST', // 固定值,必须
  584. Key: key, // 必须
  585. Url: url, // 请求的url,必须
  586. Body: body, // 请求体参数,必须
  587. Headers: {
  588. // 设置请求体为 json,固定值,必须
  589. 'Content-Type': 'application/json',
  590. // 设置响应体为json,固定值,必须
  591. Accept: 'application/json',
  592. },
  593. },
  594. function (err, data) {
  595. if (err) {
  596. // 处理请求失败
  597. console.log(err);
  598. } else {
  599. // 处理请求成功
  600. console.log(data);
  601. }
  602. }
  603. );
  604. }
  605. // 图像检索
  606. function searchImage() {
  607. const key = 'datasetquery/imagesearch'; // 固定值
  608. const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
  609. const url = `https://${host}/${key}`;
  610. const body = JSON.stringify({
  611. // 数据集名称,同一个账户下唯一。;是否必传:是
  612. DatasetName: 'test-dataset-imagesearch2',
  613. // 指定检索方式为图片或文本,pic 为图片检索,text 为文本检索,默认为 pic。;是否必传:否
  614. Mode: 'pic',
  615. // 资源标识字段,表示需要建立索引的文件地址(Mode 为 pic 时必选)。;是否必传:否
  616. URI: `cos://${config.Bucket}/ci/dog.jpeg`,
  617. // 返回相关图片的数量,默认值为10,最大值为100。;是否必传:否
  618. Limit: 10,
  619. // 出参 Score(相关图片匹配得分) 中,只有超过 MatchThreshold 值的结果才会返回。默认值为0,推荐值为80。;是否必传:否
  620. MatchThreshold: 1,
  621. });
  622. cos.request(
  623. {
  624. Method: 'POST', // 固定值,必须
  625. Key: key, // 必须
  626. Url: url, // 请求的url,必须
  627. Body: body, // 请求体参数,必须
  628. Headers: {
  629. // 设置请求体为 json,固定值,必须
  630. 'Content-Type': 'application/json',
  631. // 设置响应体为json,固定值,必须
  632. Accept: 'application/json',
  633. },
  634. },
  635. function (err, data) {
  636. if (err) {
  637. // 处理请求失败
  638. console.log(err);
  639. } else {
  640. // 处理请求成功
  641. console.log(data);
  642. }
  643. }
  644. );
  645. }
  646. module.exports = metaDao;