如何利用图像搜索,在36万数据中快速的add?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要在图像搜索服务中快速向包含36万数据的实例中添加图片,您可以根据数据规模和实时性需求选择合适的方式。以下是详细的步骤和建议:
在使用图像搜索服务时,首先需要了解您的实例规格以及新增图片的QPS(每秒查询数)限制: - 如果您的实例规格为10W图片容量,默认的实时新增QPS为1。 - 其他规格的实例,默认的实时新增QPS为5。
对于36万数据量的场景,如果采用实时新增方式,可能需要较长时间完成。因此,建议优先考虑离线新增方式。
离线新增适用于大规模数据操作(百万级),并且是免费服务,QPS远高于实时新增。以下是具体操作步骤:
准备图片数据:
创建increment.meta
文件:
{"OperationType": "ADD", "ProductId": "1000", "PicName": "shoes1.jpg"}
{"OperationType": "ADD", "ProductId": "1001", "PicName": "shoes2.jpg"}
OperationType
:操作类型,取值为ADD
(新增)或DELETE
(删除)。ProductId
:商品ID,最多支持256个字符。PicName
:图片名称,OSS中的图片文件名,最多支持256个字符。提交批量任务:
increment.meta
文件,并指定对应的OSS Bucket。监控任务进度:
如果您的数据量较小或需要实时新增,可以使用官方提供的SDK进行操作。以下是基于不同语言的SDK示例:
imagesearch-vpc.cn-hangzhou.aliyuncs.com
。以下为不同语言的SDK调用示例:
use AlibabaCloud\SDK\ImageSearch\V20210501\ImageSearch;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
$config = new Config([
"accessKeyId" => "<your-access-key-id>",
"accessKeySecret" => "<your-access-key-secret>",
"regionId" => "cn-hangzhou",
"endpoint" => "imagesearch-vpc.cn-hangzhou.aliyuncs.com"
]);
$client = new ImageSearch($config);
$request = new AddImageAdvanceRequest();
$request->instanceName = "your-instance-name";
$request->productId = "testProduct";
$request->picName = "testPic.jpg";
$request->picContentObject = new Stream(fopen("<filePath>", 'r+'));
try {
$response = $client->addImageAdvance($request);
var_dump($response->toMap());
} catch (TeaUnableRetryError $e) {
var_dump($e->getLastException(), $e->getLastRequest());
}
const fs = require('fs');
const imagesearch = require("@alicloud/imagesearch-20210501");
const client = new imagesearch({
accessKeyId: "<your-access-key-id>",
accessKeySecret: "<your-access-key-secret>",
regionId: "cn-hangzhou",
protocol: "http"
});
async function demo() {
const picContent = fs.createReadStream("D:/123.jpg");
const request = new imagesearch.AddImageAdvanceRequest({
instanceName: "your-instance-name",
productId: "testProduct",
picName: "testPic.jpg",
picContentObject: picContent
});
try {
const response = await client.addImageAdvance(request);
console.log(response);
} catch (err) {
console.error(err);
}
}
demo();
import com.aliyun.imagesearch20210501.Client;
import com.aliyun.imagesearch20210501.models.AddImageAdvanceRequest;
public class Main {
public static void main(String[] args) throws Exception {
Client client = new Client(new Config()
.setAccessKeyId("<your-access-key-id>")
.setAccessKeySecret("<your-access-key-secret>")
.setRegionId("cn-hangzhou")
.setEndpoint("imagesearch-vpc.cn-hangzhou.aliyuncs.com"));
AddImageAdvanceRequest request = new AddImageAdvanceRequest();
request.setInstanceName("your-instance-name");
request.setProductId("testProduct");
request.setPicName("testPic.jpg");
request.setPicContentObject(new File("D:/123.jpg"));
try {
var response = client.addImageAdvance(request);
System.out.println(response.getBody());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Crop
参数为true
。通过以上方法,您可以高效地将36万数据快速添加到图像搜索实例中。如果仍有疑问,可以通过钉钉群(35035130)获取技术支持。