123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683 |
- const COS = require('../lib/cos-wx-sdk-v5');
- const config = require('../config');
- const { cos, requestCallback } = require('../tools');
- const metaDao = {
- '创建数据集 createDataset': createDataset,
- '更新数据集 updateDataset': updateDataset,
- '删除数据集 deleteDataset': deleteDataset,
- '列出数据集 describeDatasets': describeDatasets,
- '查询数据集 describeDataset': describeDataset,
- '绑定存储桶与数据集 createDatasetBinding': createDatasetBinding,
- '解绑存储桶与数据集 deleteDatasetBinding': deleteDatasetBinding,
- '查询数据集与存储桶的绑定关系 describeDatasetBinding': describeDatasetBinding,
- '查询绑定关系列表 describeDatasetBindings': describeDatasetBindings,
- '创建元数据索引 createFileMetaIndex': createFileMetaIndex,
- '删除元数据索引 deleteFileMetaIndex': deleteFileMetaIndex,
- '查询元数据索引 describeFileMetaIndex': describeFileMetaIndex,
- '更新元数据索引 updateFileMetaIndex': updateFileMetaIndex,
- '简单查询 datasetSimpleQuery': datasetSimpleQuery,
- '人脸搜索 datasetFaceSearch': datasetFaceSearch,
- '图像检索 searchImage': searchImage,
- };
- /**
- * 元数据demo集合
- */
- // 从 Bucket 里拆出 AppId
- const AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);
- // 创建数据集
- function createDataset() {
- const key = 'dataset'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。命名规则如下: - 长度为1~128字符 - 只能包含英文字母,数字,短划线(-)和下划线() - 必须以英文字母和下划线()开头;是否必传:是
- DatasetName: 'test-dataset-base',
- // 数据集描述信息。长度为1~256个英文或中文字符,默认值为空。;是否必传:否
- Description: 'test-dataset-desc',
- // 指模板,在建立元数据索引时,后端将根据模板来决定收集哪些元数据。每个模板都包含一个或多个算子,不同的算子表示不同的元数据。目前支持的模板: Official:DefaultEmptyId:默认为空的模板,表示不进行元数据的采集。 Official:COSBasicMeta:基础信息模板,包含 COS 文件基础元信息算子,表示采集 COS 文件的名称、类型、ACL等基础元信息数据。 Official:FaceSearch:人脸检索模板,包含人脸检索、COS 文件基础元信息算子。Official:ImageSearch:图像检索模板,包含图像检索、COS 文件基础元信息算子。;是否必传:否
- TemplateId: 'Official:COSBasicMeta',
- });
- cos.request(
- {
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 更新数据集
- function updateDataset() {
- const key = 'dataset'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-base',
- // 数据集描述信息。长度为1~256个英文或中文字符,默认值为空。;是否必传:否
- Description: 'test-dataset-base-desc1',
- // 该参数表示模板,在建立元数据索引时,后端将根据模板来决定收集哪些元数据。每个模板都包含一个或多个算子,不同的算子表示不同的元数据。目前支持的模板: Official:Empty:默认为空的模板,表示不进行元数据的采集。 Official:COSBasicMeta:基础信息模板,包含COS文件基础元信息算子,表示采集cos文件的名称、类型、acl等基础元信息数据。;是否必传:否
- TemplateId: 'Official:COSBasicMeta',
- });
- cos.request(
- {
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 删除数据集
- function deleteDataset() {
- const key = 'dataset'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-base',
- });
- cos.request(
- {
- Method: 'DELETE', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 列出数据集
- function describeDatasets() {
- const key = 'datasets'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 本次返回数据集的最大个数,取值范围为0~200。不设置此参数或者设置为0时,则默认值为100。;是否必传:否
- maxresults: 100,
- // 翻页标记。当文件总数大于设置的MaxResults时,用于翻页的Token。从NextToken开始按字典序返回文件信息列表。填写上次查询返回的值,首次使用时填写为空。;是否必传:否
- // nexttoken: '',
- // 数据集名称前缀。;是否必传:否
- // prefix: 'test',
- },
- Headers: {
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 查询数据集
- function describeDataset() {
- const key = 'dataset'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 数据集名称,同一个账户下唯一。;是否必传:是
- datasetname: 'test-dataset-base',
- // 是否需要实时统计数据集中文件相关信息。有效值: false:不统计,返回的文件的总大小、数量信息可能不正确也可能都为0。 true:需要统计,返回数据集中当前的文件的总大小、数量信息。 默认值为false。;是否必传:否
- statistics: false,
- },
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 绑定存储桶与数据集
- function createDatasetBinding() {
- const key = 'datasetbinding'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-imagesearch2',
- // 资源标识字段,表示需要与数据集绑定的资源,当前仅支持COS存储桶,字段规则:cos://,其中BucketName表示COS存储桶名称,例如:cos://examplebucket-1250000000;是否必传:是
- URI: `cos://${config.Bucket}`,
- });
- cos.request(
- {
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 解绑存储桶与数据集
- function deleteDatasetBinding() {
- const key = 'datasetbinding'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-imagesearch2',
- // 资源标识字段,表示需要与数据集绑定的资源,当前仅支持COS存储桶,字段规则:cos://,其中BucketName表示COS存储桶名称,例如:cos://examplebucket-1250000000;是否必传:是
- URI: `cos://${config.Bucket}`,
- });
- cos.request(
- {
- Method: 'DELETE', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 查询数据集与存储桶的绑定关系
- function describeDatasetBinding() {
- const key = 'datasetbinding'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 数据集名称,同一个账户下唯一。;是否必传:是
- datasetname: 'test-dataset-imagesearch2',
- // 资源标识字段,表示需要与数据集绑定的资源,当前仅支持COS存储桶,字段规则:cos://,其中BucketName表示COS存储桶名称,例如(需要进行urlencode):cos%3A%2F%2Fexample-125000;是否必传:是
- uri: `cos://${config.Bucket}`,
- },
- Headers: {
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 查询绑定关系列表
- function describeDatasetBindings() {
- const key = 'datasetbindings'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 数据集名称,同一个账户下唯一。;是否必传:否
- datasetname: 'test-dataset-imagesearch2',
- // 返回绑定关系的最大个数,取值范围为0~200。不设置此参数或者设置为0时,则默认值为100。;是否必传:否
- maxresults: 100,
- // 当绑定关系总数大于设置的MaxResults时,用于翻页的token。从NextToken开始按字典序返回绑定关系信息列表。第一次调用此接口时,设置为空。;是否必传:是
- // nexttoken: '',
- },
- Headers: {
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 创建元数据索引
- function createFileMetaIndex() {
- const key = 'filemeta'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-imagesearch2',
- // 元数据索引结果(以回调形式发送至您的回调地址,支持以 http:// 或者 https:// 开头的地址,例如: http://www.callback.com。;是否必传:否
- // Callback: 'http://www.callback.com',
- // 用于建立索引的文件信息。;是否必传:是
- File: {
- // 自定义ID。该文件索引到数据集后,作为该行元数据的属性存储,用于和您的业务系统进行关联、对应。您可以根据业务需求传入该值,例如将某个URI关联到您系统内的某个ID。推荐传入全局唯一的值。在查询时,该字段支持前缀查询和排序,详情请见字段和操作符的支持列表。 ;是否必传:否
- // CustomId: '001',
- // 自定义标签。您可以根据业务需要自定义添加标签键值对信息,用于在查询时可以据此为筛选项进行检索,详情请见字段和操作符的支持列表。 ;是否必传:否
- // CustomLabels: {"age":"18","level":"18"},
- // 可选项,文件媒体类型,枚举值: image:图片。 other:其他。 document:文档。 archive:压缩包。 video:视频。 audio:音频。 ;是否必传:否
- MediaType: 'image',
- // 可选项,文件内容类型(MIME Type),如image/jpeg。 ;是否必传:否
- ContentType: 'image/jpeg',
- // 资源标识字段,表示需要建立索引的文件地址,当前仅支持COS上的文件,字段规则:cos:///,其中BucketName表示COS存储桶名称,ObjectKey表示文件完整路径,例如:cos://examplebucket-1250000000/test1/img.jpg。 注意: 1、仅支持本账号内的COS文件 2、不支持HTTP开头的地址;是否必传:是
- URI: `cos://${config.Bucket}/ci/dog.jpeg`,
- // 输入图片中检索的人脸数量,默认值为20,最大值为20。(仅当数据集模板 ID 为 Official:FaceSearch 有效)。;是否必传:否
- // MaxFaceNum: 20,
- // 自定义人物属性(仅当数据集模板 ID 为 Official:FaceSearch 有效)。;是否必传:否
- // Persons: {
- // },
- },
- });
- cos.request(
- {
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 删除元数据索引
- function deleteFileMetaIndex() {
- const key = 'filemeta'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-imagesearch2',
- // 资源标识字段,表示需要建立索引的文件地址。;是否必传:是
- URI: `cos://${config.Bucket}/1.png`,
- });
- cos.request(
- {
- Method: 'DELETE', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 查询元数据索引
- function describeFileMetaIndex() {
- const key = 'filemeta'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 数据集名称,同一个账户下唯一。;是否必传:是
- datasetname: 'test-dataset-imagesearch2',
- // 资源标识字段,表示需要建立索引的文件地址,当前仅支持COS上的文件,字段规则:cos:///,其中BucketName表示COS存储桶名称,ObjectKey表示文件完整路径,例如:cos://examplebucket-1250000000/test1/img.jpg。 注意: 1、仅支持本账号内的COS文件 2、不支持HTTP开头的地址 3、需UrlEncode;是否必传:是
- uri: `cos://${config.Bucket}/ci/dog.jpeg`,
- },
- Headers: {
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err.message);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 更新元数据索引
- function updateFileMetaIndex() {
- const key = 'filemeta'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-imagesearch2',
- // 元数据索引结果(以回调形式发送至您的回调地址,支持以 http:// 或者 https:// 开头的地址,例如: http://www.callback.com;是否必传:是
- // Callback: 'http://www.callback.com',
- // 用于建立索引的文件信息。;是否必传:是
- File: {
- // 自定义ID。该文件索引到数据集后,作为该行元数据的属性存储,用于和您的业务系统进行关联、对应。您可以根据业务需求传入该值,例如将某个URI关联到您系统内的某个ID。推荐传入全局唯一的值。在查询时,该字段支持前缀查询和排序,详情请见字段和操作符的支持列表。 ;是否必传:否
- CustomId: '002',
- // 自定义标签。您可以根据业务需要自定义添加标签键值对信息,用于在查询时可以据此为筛选项进行检索,详情请见字段和操作符的支持列表。 ;是否必传:否
- // CustomLabels: { age: '18', level: '18' },
- // 可选项,文件媒体类型,枚举值: image:图片。 other:其他。 document:文档。 archive:压缩包。 video:视频。 audio:音频。 ;是否必传:否
- MediaType: 'image',
- // 可选项,文件内容类型(MIME Type),如image/jpeg。 ;是否必传:否
- ContentType: 'image/jpeg',
- // 资源标识字段,表示需要建立索引的文件地址,当前仅支持COS上的文件,字段规则:cos:///,其中BucketName表示COS存储桶名称,ObjectKey表示文件完整路径,例如:cos://examplebucket-1250000000/test1/img.jpg。 注意: 1、仅支持本账号内的COS文件 2、不支持HTTP开头的地址;是否必传:是
- URI: `cos://${config.Bucket}/ci/dog.jpeg`,
- // 自定义人物属性(仅当数据集模板 ID 为 Official:FaceSearch 有效)。;是否必传:否
- // Persons: {},
- },
- });
- cos.request(
- {
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 简单查询
- function datasetSimpleQuery() {
- const key = 'datasetquery/simple'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-base',
- // 简单查询参数条件,可自嵌套。;是否必传:否
- // Query: {
- // // 操作运算符。枚举值: not:逻辑非。 or:逻辑或。 and:逻辑与。 lt:小于。 lte:小于等于。 gt:大于。 gte:大于等于。 eq:等于。 exist:存在性查询。 prefix:前缀查询。 match-phrase:字符串匹配查询。 nested:字段为数组时,其中同一对象内逻辑条件查询。;是否必传:是
- // Operation: 'and',
- // // 子查询的结构体。 只有当Operations为逻辑运算符(and、or、not或nested)时,才能设置子查询条件。 在逻辑运算符为and/or/not时,其SubQueries内描述的所有条件需符合父级设置的and/or/not逻辑关系。 在逻辑运算符为nested时,其父级的Field必须为一个数组类的字段(如:Labels)。 子查询条件SubQueries组的Operation必须为and/or/not中的一个或多个,其Field必须为父级Field的子属性。;是否必传:否
- // SubQueries: [{
- // Operation: '',
- // Field: '',
- // }],
- // Field: '',
- // Value: '',
- // },
- // 返回文件元数据的最大个数,取值范围为0200。 使用聚合参数时,该值表示返回分组的最大个数,取值范围为02000。 不设置此参数或者设置为0时,则取默认值100。;是否必传:否
- MaxResults: 100,
- // 排序字段列表。请参考字段和操作符的支持列表。 多个排序字段可使用半角逗号(,)分隔,例如:Size,Filename。 最多可设置5个排序字段。 排序字段顺序即为排序优先级顺序。;是否必传:是
- // Sort: 'CustomId',
- // 排序字段的排序方式。取值如下: asc:升序; desc(默认):降序。 多个排序方式可使用半角逗号(,)分隔,例如:asc,desc。 排序方式不可多于排序字段,即参数Order的元素数量需小于等于参数Sort的元素数量。例如Sort取值为Size,Filename时,Order可取值为asc,desc或asc。 排序方式少于排序字段时,未排序的字段默认取值asc。例如Sort取值为Size,Filename,Order取值为asc时,Filename默认排序方式为asc,即升序排列;是否必传:是
- Order: 'desc',
- // 聚合字段信息列表。 当您使用聚合查询时,仅返回聚合结果,不再返回匹配到的元信息列表。;是否必传:否
- // Aggregations: {
- // Operation: '',
- // Field: ''
- // },
- });
- cos.request(
- {
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 人脸搜索
- function datasetFaceSearch() {
- const key = 'datasetquery/facesearch'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-facesearch',
- // 资源标识字段,表示需要建立索引的文件地址。;是否必传:是
- URI: `cos://${config.Bucket}/ci/1.jpg`,
- // 输入图片中检索的人脸数量,默认值为1(传0或不传采用默认值),最大值为10。;是否必传:否
- MaxFaceNum: 1,
- // 检索的每张人脸返回相关人脸数量,默认值为10,最大值为100。;是否必传:否
- Limit: 10,
- // 出参 Score 中,只有超过 MatchThreshold 值的结果才会返回。范围:1-100,默认值为0,推荐值为80。;是否必传:否
- MatchThreshold: 10,
- });
- cos.request(
- {
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- // 图像检索
- function searchImage() {
- const key = 'datasetquery/imagesearch'; // 固定值
- const host = `${AppId}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = JSON.stringify({
- // 数据集名称,同一个账户下唯一。;是否必传:是
- DatasetName: 'test-dataset-imagesearch2',
- // 指定检索方式为图片或文本,pic 为图片检索,text 为文本检索,默认为 pic。;是否必传:否
- Mode: 'pic',
- // 资源标识字段,表示需要建立索引的文件地址(Mode 为 pic 时必选)。;是否必传:否
- URI: `cos://${config.Bucket}/ci/dog.jpeg`,
- // 返回相关图片的数量,默认值为10,最大值为100。;是否必传:否
- Limit: 10,
- // 出参 Score(相关图片匹配得分) 中,只有超过 MatchThreshold 值的结果才会返回。默认值为0,推荐值为80。;是否必传:否
- MatchThreshold: 1,
- });
- cos.request(
- {
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- Headers: {
- // 设置请求体为 json,固定值,必须
- 'Content-Type': 'application/json',
- // 设置响应体为json,固定值,必须
- Accept: 'application/json',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- }
- );
- }
- module.exports = metaDao;
|