
# 搜索数据示例
本章节对搜索数据AK/SK方式使用SDK进行示例说明。
搜索示例代码只需将AK/SK信息替换为实际AK/SK，代码中可以使用初始化SearchParam中的image_url、search_type、custom_tags、keywords、optional_params配置服务的输入参数，其中optionl_params为服务可选输入参数，配置完成后运行即可。
1. 搜索数据调用示例代码如下：
   ```
   # coding: utf-8
    
   from huaweicloudsdkcore.auth.credentials import BasicCredentials
   from huaweicloudsdkcore.region.region import Region as coreRegion
   from huaweicloudsdkcore.exceptions import exceptions
   from huaweicloudsdkimagesearch.v2 import *
    
   if __name__ == "__main__":
       # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全；
       # 本示例以ak和sk保存在环境变量中来实现身份验证为例，运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
       ak = os.getenv("HUAWEICLOUD_SDK_AK")
       sk = os.getenv("HUAWEICLOUD_SDK_SK")
       iamEndpoint = "https://iam.cn-north-4.myhuaweicloud.com"
       endpoint = "https://mms.cn-north-4.myhuaweicloud.com"
       projectId = "project_id"
    
       credentials = BasicCredentials(ak, sk, projectId) \
               .with_iam_endpoint(iamEndpoint)
    
       # 初始化客户端
       client = ImageSearchClient.new_builder() \
           .with_credentials(credentials) \
           # 设置region, 示例中为北京四
           .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \
           .build()
    
       try:
           request = RunSearchRequest()
           request.service_name = "service_name"
           optionalParamsbody = SearchOptionalParam(
               do_det=True,
               box="135,489,1117,1341",
               do_cls=True
           )
           listCustomTagsCustomTags = [
               "value1",
               "value2",
               "value3"
           ]
           listCustomTagsbody = {
               "key": listCustomTagsCustomTags
           }
           request.body = SearchParam(
               optional_params=optionalParamsbody,
               # 替换为公网可以访问的图片地址
               image_url="https://bucketname.obs.cn-north-4.myhuaweicloud.com/image/test1.jpg
   ",
               custom_tags=listCustomTagsbody,
               offset=0,
               limit=30,
               search_type="CATEGORY"
           )
           response = client.run_search(request)
           print(response)
       except exceptions.ClientRequestException as e:
           print(e.status_code)
           print(e.request_id)
           print(e.error_code)
           print(e.error_msg)
   ```
   
2. 执行示例代码文件，控制台输出搜索数据结果即表示程序执行成功。
   ```
   {
       "result": "success",
       "data": {
           "items": [
               {
                   "id": "item_id",
                   "score": 1.0,
                   "source": {
                       "custom_tags": {
                           "key": "value"
                       }
                   }
               }
           ],
           "search_info": {
               "total_num": 1,
               "return_num": 1,
               "search_time": 969
           },
           "image_info": {
               "box": "135,489,1117,1341",
               "category": 0,
               "category_name": "others",
               "objects": [
                   {
                       "box": "135,489,1117,1341",
                       "category": 0,
                       "category_name": "others"
                   }
               ]
           }
       }
   }
   ```
   
 
