La dernière fois, j'ai enregistré une image à l'aide de la fonction d'importation de Recherche d'images. Avec la fonction d'importation, seuls les paramètres pour V1 peuvent être enregistrés et les paramètres nouvellement ajoutés pour V2 ne peuvent pas être enregistrés ~~. ** C'est fait. Je suis désolé. ** **
Donc, je pense qu'il est préférable de s'enregistrer en utilisant l'API pour saisir des données dans la recherche d'images. Il y a certains points à prendre en compte lors de l'enregistrement des données, je voudrais donc les décrire.
Cette fois, nous nous enregistrerons à l'aide du SDK Java. Veuillez vous référer à [Rechercher] pour la construction de l'environnement.
SimpleAdd.java
package imagesearch.sample;
import java.io.InputStream;
import java.util.Base64;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.imagesearch.model.v20190325.AddImageRequest;
import com.aliyuncs.imagesearch.model.v20190325.AddImageResponse;
import com.aliyuncs.imagesearch.model.v20190325.AddImageResponse.PicInfo;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class SimpleAdd {
/** AccessKey */
private static final String ACCESS_KEY = "XXXXXXXXXXXXXxxx";
/** SeacretKey */
private static final String KEY_SEACRET = "YYYYYYYYYYYYYYY";
public static void main(String[] args) throws Exception {
//Initialisation(Cas de la région de Tokyo
DefaultProfile.addEndpoint("ap-northeast-1", "ImageSearch", "imagesearch.ap-northeast-1.aliyuncs.com");
IClientProfile profile = DefaultProfile.getProfile("ap-northeast-1", ACCESS_KEY, KEY_SEACRET);
IAcsClient client = new DefaultAcsClient(profile);
AddImageRequest request = new AddImageRequest();
request.setInstanceName("itemsearch");
request.setProductId("id-0001");
request.setPicName("item0001");
request.setCategoryId(9);
request.setCrop(true);
request.setIntAttr(1000);
request.setStrAttr("Meubles: chaise");
request.setCustomContent("{'sample': 'échantillon'}");
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream is = loader.getResourceAsStream("item01.jpg ");
String image = Base64.getEncoder().encodeToString(is.readAllBytes());
request.setPicContent(image);
AddImageResponse response = client.getAcsResponse(request);
// Debug
boolean checkShowJsonItemName = response.checkShowJsonItemName();
Integer code = response.getCode();
String message = response.getMessage();
String requestId = response.getRequestId();
Boolean success = response.getSuccess();
PicInfo picInfo = response.getPicInfo();
Integer categoryId = picInfo.getCategoryId();
String region = picInfo.getRegion();
System.out.printf("requestId:%s%nmessage:%s%ncheckShowJsonItemName:%s%ncode:%s%nsuccess:%s%n", requestId, message, checkShowJsonItemName, code, success);
System.out.println("PicInfo");
System.out.printf("\tcategoryId:%s%n\tregion:%s%n", categoryId, region);
}
}
requestId:F009FFA3-D94C-4C95-A8D1-957F7EE06591
message:success
checkShowJsonItemName:false
code:0
success:true
PicInfo
categoryId:9
region:140,474,36,578
ProductId
request.setProductId(productId);
Entrée requise. Prend en charge les identifiants de produit jusqu'à 512 caractères. Vous pouvez inclure plusieurs images dans un seul produit.
PicName
request.setPicName(picName);
Entrée requise. Prend en charge les noms d'image jusqu'à 512 caractères.
En enregistrant plusieurs images pour un produit, vous pouvez améliorer la précision de la recherche. Je pense qu'il est bon d'enregistrer certaines images de motifs telles que l'image avant et l'image diagonale.
CategoryId
request.setCategoryId(9);
L'entrée est facultative. Catégorie d'image.
Catégories configurables
Identifiant de catégorie | La description |
---|---|
0 | hauts |
1 | robe |
2 | Bas |
3 | sac |
4 | chaussures |
5 | Accessoires |
6 | goûter |
7 | Maquillage |
8 | Boisson en bouteille |
9 | meubles |
20 | jouet |
21 | sous-vêtements |
22 | Équipement numérique |
88888888 | Autre |
PicContent
request.setPicContent(encodePicContent);
Entrée requise. Contenu d'image encodé en base64. Prend en charge des images jusqu'à 2 Mo et une latence d'envoi de 5 secondes. Actuellement, seuls les formats d'image jpg et png sont pris en charge. Les pixels verticaux et horizontaux doivent être compris entre 200 et 1024 et l'image ne peut pas contenir d'informations de rotation.
En production, il peut être préférable d'inclure une logique de conversion avant l'enregistrement. De plus, je ne sais pas ce que signifie «prendre en charge un temps d'attente de transmission de 5 secondes» ici. .. .. Qu'est-ce que vous voulez. Si quelqu'un sait, faites-le moi savoir. (Je vais le vérifier dans la source bientôt ...)
Crop
request.setCrop(true);
L'entrée est facultative. Si la reconnaissance du sujet est nécessaire, la valeur par défaut est true.
Dans le cas de la recherche de produits, je pense que c'est vrai. Par exemple, si vous souhaitez rechercher quelque chose comme l'atmosphère d'une pièce, vous pouvez vous inscrire avec false.
Region
request.setRegion("280,486,232,351");
L'entrée est facultative. La plage de sujets de l'image exprimée au format x1, x2, y1, y2, x1, y1 est le point supérieur gauche, x2, y2 est le point inférieur droit. Si l'utilisateur définit une région, la recherche est effectuée dans cette région quelle que soit la valeur du paramètre Crop.
Lorsqu'il y a plusieurs objets dans l'image à enregistrer (par exemple, lorsque vous essayez d'enregistrer une chaise et qu'un rideau ou une table est également affiché), en définissant les informations de position de l'objet cible afin d'améliorer la précision de la recherche, Vous pouvez améliorer la précision de la recherche.
IntAttr
request.setIntAttr(intAttr);
L'entrée est facultative. Attribut entier qui peut être utilisé pour le filtrage lors de la recherche, ce champ est renvoyé lors de la recherche. Par exemple, vous pouvez définir IntAttr pour chaque image de site / image d'utilisateur et les filtrer lors de la recherche.
Paramètres pouvant être utilisés pour les filtres ajoutés à partir de V2. Il est maintenant possible de filtrer en combinaison avec StrAttr, qui sera décrit plus loin. En utilisant un filtre, vous pouvez obtenir des données qui correspondent aux conditions de filtre de la recherche d'images. C'est pratique parce que je devais filtrer après avoir obtenu les données. Si vous le demandez, il serait utile que vous puissiez définir plusieurs valeurs. .. .. Les conditions du filtre sont ">,> =, <, <=, =". Si vous fixez le prix du produit, je pense que vous pouvez vous limiter aux produits de 10 000 yens à 30 000 yens qui sont courants sur les sites européens.
StrAttr
request.setStrAttr(strAttr);
L'entrée est facultative. Prend en charge les attributs de type chaîne, jusqu'à 128 caractères. Il peut être utilisé pour filtrer lors de la recherche. Ce champ est renvoyé lors de la recherche.
Ici, vous pouvez définir une chaîne et la filtrer. La condition de filtre qui peut être utilisée est "=,! =". De plus, c'est un filtre avec une correspondance exacte. C'est assez gênant. .. .. Une manière réaliste de l'utiliser est de convertir les paramètres en bits et de les définir. .. .. C'est encore difficile à utiliser. Ce serait très utile si vous pouviez définir plusieurs paramètres et utiliser des expressions régulières.
CustomContent
request.setCustomContent("Douane");
L'entrée est facultative. Prend en charge le contenu personnalisé par l'utilisateur, jusqu'à 4096 caractères. Ce champ est renvoyé lors de la recherche. Par exemple, vous pouvez ajouter du texte tel qu'une description d'image.
Vous pouvez le rendre plus facile à utiliser en définissant JSON, etc.
Limites du système - Guide de l'utilisateur | Alibaba Cloud Document Center https://jp.alibabacloud.com/help/doc-detail/74408.htm
Voici quelques points à garder à l'esprit lors de l'inscription.
Les points à prendre en compte sont les suivants
Recommended Posts