
# 搜索数据示例
本章节对搜索数据AK/SK方式使用SDK进行示例说明。
搜索示例代码只需将AK/SK信息替换为实际AK/SK，代码中可以使用SearchParam类的ImageUrl、SearchType、OptionalParams、Keywords、CustomTags配置服务输入参数，其中OptionalParams为服务可选输入参数，配置完成后运行即可。
1. 搜索数据调用示例代码如下：
   ```
   package main
   import (
   "fmt"
   "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
       imagesearch "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/imagesearch/v2"
   "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/imagesearch/v2/model"
       region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region"
   )
   func 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"
       auth := basic.NewCredentialsBuilder().
           WithAk(ak).
           WithSk(sk).
           WithIamEndpointOverride(iamEndpoint).
   WithProjectId(projectId).
           Build()
       // 初始化客户端
       client := imagesearch.NewImageSearchClient(
           imagesearch.ImageSearchClientBuilder().
   // 设置region, 示例中为北京四
               WithRegion(region.NewRegion("cn-north-4", endpoint)).
               WithCredential(auth).
               Build())
       request := &model.RunSearchRequest{}
   request.ServiceName = "service_name"
   doDetOptionalParams:= true
   boxOptionalParams:= "135,489,1117,1341"
   doClsOptionalParams:= true
   optionalParamsbody := &model.SearchOptionalParam{
   DoDet: &doDetOptionalParams,
   Box: &boxOptionalParams,
   DoCls: &doClsOptionalParams,
   }
   var listCustomTagsCustomTags = []string{
           "value1",
       "value2",
       "value3",
       }
   var listCustomTagsbody = map[string][]string{
           "key": listCustomTagsCustomTags,
       }
       // 替换为公网可以访问的图片地址
   imageUrlSearchParam:= "https://bucketname.obs.cn-north-4.myhuaweicloud.com/image/test1.jpg
   "
   offsetSearchParam:= int32(0)
   limitSearchParam:= int32(30)
   request.Body = &model.SearchParam{
   OptionalParams: optionalParamsbody,
   ImageUrl: &imageUrlSearchParam,
   CustomTags: listCustomTagsbody,
   Offset: &offsetSearchParam,
   Limit: &limitSearchParam,
   SearchType: model.GetSearchParamSearchTypeEnum().CATEGORY,
   }
   response, err := client.RunSearch(request)
   if err == nil {
           fmt.Printf("%+v\n", response)
       } else {
           fmt.Println(err)
       }
   }
   ```
   
2. 执行示例代码文件，控制台输出搜索数据结果即表示程序执行成功。
   ```
   RunSearchResponse 
   {
       "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"
                   }
               ]
           }
       }
   }
   ```
   
 
