多商戶接入阿里云識圖找商品接入方案
如果要用 PHP 模型(即 PHP 代碼調(diào)用阿里云 Image Search API),阿里云官方也提供了 PHP SDK 與 OpenAPI 方式。下面給你一個完整的 PHP 多商戶對接示例。
1. 準(zhǔn)備工作
- 開通阿里云 圖像搜索(Image Search) 實例。
- 獲取 AccessKeyId / AccessKeySecret。
- 確認(rèn)實例名(instanceName),區(qū)域一般是 cn-shanghai。
2. 安裝 SDK
推薦使用 Composer:
composer require alibabacloud/sdk
或者指定單獨的 imagesearch 包(如果有獨立發(fā)布)。
3. 初始化客戶端
use AlibabaCloud\Client\AlibabaCloud;
AlibabaCloud::accessKeyClient('<your-access-key-id>', '<your-access-key-secret>')
->regionId('cn-shanghai') // 你的區(qū)域
->asDefaultClient();
4. 入庫商品圖(AddImage)
use AlibabaCloud\SDK\Imagesearch\V20190325\Imagesearch;
use AlibabaCloud\SDK\Imagesearch\V20190325\Models\AddRequest;
$client = new Imagesearch();
$request = new AddRequest([
"instanceName" => "your-instance-name",
"picName" => "merchant123-sku999-main1", // picName 建議拼 merchantId + sku
"picUrl" => "https://your-oss-bucket.oss-cn-shanghai.aliyuncs.com/path/to/image.jpg",
"strAttr" => "merchant123", // 商戶隔離
"categoryId" => 88888888 // 類目ID,可選
]);
$response = $client->add($request);
if ($response->body->success) {
echo "入庫成功\n";
} else {
echo "失敗: " . $response->body->message . "\n";
}
5. 搜索商品圖(SearchImageByPic)
use AlibabaCloud\SDK\Imagesearch\V20190325\Models\SearchImageByPicRequest;
$imageBytes = file_get_contents('/path/to/query.jpg');
$base64Img = base64_encode($imageBytes);
$request = new SearchImageByPicRequest([
"instanceName" => "your-instance-name",
"picContent" => $base64Img,
"num" => 10, // 返回Top10
"filter" => "str_attr='merchant123'" // 只搜該商戶
]);
$response = $client->searchImageByPic($request);
foreach ($response->body->auctions as $item) {
echo "PicName: {$item->picName}, Score: {$item->score}\n";
}
6. 多商戶要點
- picName 命名:merchantId-skuId-imageNo,方便搜索結(jié)果映射回商品。
- strAttr 過濾:保證不同商戶之間隔離。
- 分實例/共用實例:大商戶可獨立實例,小商戶共用實例,通過 filter 控制隔離。
- 下架同步:記得調(diào)用 DeleteImage 刪除無效圖。