| // Copyright 2021 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // Code generated by protoc-gen-go. DO NOT EDIT. |
| // versions: |
| // protoc-gen-go v1.33.0 |
| // protoc v4.25.3 |
| // source: google/cloud/retail/v2beta/search_service.proto |
| |
| package retailpb |
| |
| import ( |
| context "context" |
| reflect "reflect" |
| sync "sync" |
| |
| _ "google.golang.org/genproto/googleapis/api/annotations" |
| grpc "google.golang.org/grpc" |
| codes "google.golang.org/grpc/codes" |
| status "google.golang.org/grpc/status" |
| protoreflect "google.golang.org/protobuf/reflect/protoreflect" |
| protoimpl "google.golang.org/protobuf/runtime/protoimpl" |
| fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" |
| structpb "google.golang.org/protobuf/types/known/structpb" |
| ) |
| |
| const ( |
| // Verify that this generated code is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) |
| // Verify that runtime/protoimpl is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) |
| ) |
| |
| // The search mode of each search request. |
| type SearchRequest_SearchMode int32 |
| |
| const ( |
| // Default value. In this case both product search and faceted search will |
| // be performed. Both |
| // [SearchResponse.SearchResult][google.cloud.retail.v2beta.SearchResponse.SearchResult] |
| // and |
| // [SearchResponse.Facet][google.cloud.retail.v2beta.SearchResponse.Facet] |
| // will be returned. |
| SearchRequest_SEARCH_MODE_UNSPECIFIED SearchRequest_SearchMode = 0 |
| // Only product search will be performed. The faceted search will be |
| // disabled. |
| // |
| // Only |
| // [SearchResponse.SearchResult][google.cloud.retail.v2beta.SearchResponse.SearchResult] |
| // will be returned. |
| // [SearchResponse.Facet][google.cloud.retail.v2beta.SearchResponse.Facet] |
| // will not be returned, even if |
| // [SearchRequest.facet_specs][google.cloud.retail.v2beta.SearchRequest.facet_specs] |
| // or |
| // [SearchRequest.dynamic_facet_spec][google.cloud.retail.v2beta.SearchRequest.dynamic_facet_spec] |
| // is set. |
| SearchRequest_PRODUCT_SEARCH_ONLY SearchRequest_SearchMode = 1 |
| // Only faceted search will be performed. The product search will be |
| // disabled. |
| // |
| // When in this mode, one or both of |
| // [SearchRequest.facet_specs][google.cloud.retail.v2beta.SearchRequest.facet_specs] |
| // and |
| // [SearchRequest.dynamic_facet_spec][google.cloud.retail.v2beta.SearchRequest.dynamic_facet_spec] |
| // should be set. Otherwise, an INVALID_ARGUMENT error is returned. Only |
| // [SearchResponse.Facet][google.cloud.retail.v2beta.SearchResponse.Facet] |
| // will be returned. |
| // [SearchResponse.SearchResult][google.cloud.retail.v2beta.SearchResponse.SearchResult] |
| // will not be returned. |
| SearchRequest_FACETED_SEARCH_ONLY SearchRequest_SearchMode = 2 |
| ) |
| |
| // Enum value maps for SearchRequest_SearchMode. |
| var ( |
| SearchRequest_SearchMode_name = map[int32]string{ |
| 0: "SEARCH_MODE_UNSPECIFIED", |
| 1: "PRODUCT_SEARCH_ONLY", |
| 2: "FACETED_SEARCH_ONLY", |
| } |
| SearchRequest_SearchMode_value = map[string]int32{ |
| "SEARCH_MODE_UNSPECIFIED": 0, |
| "PRODUCT_SEARCH_ONLY": 1, |
| "FACETED_SEARCH_ONLY": 2, |
| } |
| ) |
| |
| func (x SearchRequest_SearchMode) Enum() *SearchRequest_SearchMode { |
| p := new(SearchRequest_SearchMode) |
| *p = x |
| return p |
| } |
| |
| func (x SearchRequest_SearchMode) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (SearchRequest_SearchMode) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_cloud_retail_v2beta_search_service_proto_enumTypes[0].Descriptor() |
| } |
| |
| func (SearchRequest_SearchMode) Type() protoreflect.EnumType { |
| return &file_google_cloud_retail_v2beta_search_service_proto_enumTypes[0] |
| } |
| |
| func (x SearchRequest_SearchMode) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use SearchRequest_SearchMode.Descriptor instead. |
| func (SearchRequest_SearchMode) EnumDescriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 0} |
| } |
| |
| // Enum to control DynamicFacet mode |
| type SearchRequest_DynamicFacetSpec_Mode int32 |
| |
| const ( |
| // Default value. |
| SearchRequest_DynamicFacetSpec_MODE_UNSPECIFIED SearchRequest_DynamicFacetSpec_Mode = 0 |
| // Disable Dynamic Facet. |
| SearchRequest_DynamicFacetSpec_DISABLED SearchRequest_DynamicFacetSpec_Mode = 1 |
| // Automatic mode built by Google Retail Search. |
| SearchRequest_DynamicFacetSpec_ENABLED SearchRequest_DynamicFacetSpec_Mode = 2 |
| ) |
| |
| // Enum value maps for SearchRequest_DynamicFacetSpec_Mode. |
| var ( |
| SearchRequest_DynamicFacetSpec_Mode_name = map[int32]string{ |
| 0: "MODE_UNSPECIFIED", |
| 1: "DISABLED", |
| 2: "ENABLED", |
| } |
| SearchRequest_DynamicFacetSpec_Mode_value = map[string]int32{ |
| "MODE_UNSPECIFIED": 0, |
| "DISABLED": 1, |
| "ENABLED": 2, |
| } |
| ) |
| |
| func (x SearchRequest_DynamicFacetSpec_Mode) Enum() *SearchRequest_DynamicFacetSpec_Mode { |
| p := new(SearchRequest_DynamicFacetSpec_Mode) |
| *p = x |
| return p |
| } |
| |
| func (x SearchRequest_DynamicFacetSpec_Mode) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (SearchRequest_DynamicFacetSpec_Mode) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_cloud_retail_v2beta_search_service_proto_enumTypes[1].Descriptor() |
| } |
| |
| func (SearchRequest_DynamicFacetSpec_Mode) Type() protoreflect.EnumType { |
| return &file_google_cloud_retail_v2beta_search_service_proto_enumTypes[1] |
| } |
| |
| func (x SearchRequest_DynamicFacetSpec_Mode) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use SearchRequest_DynamicFacetSpec_Mode.Descriptor instead. |
| func (SearchRequest_DynamicFacetSpec_Mode) EnumDescriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 1, 0} |
| } |
| |
| // Enum describing under which condition query expansion should occur. |
| type SearchRequest_QueryExpansionSpec_Condition int32 |
| |
| const ( |
| // Unspecified query expansion condition. In this case, server behavior |
| // defaults to |
| // [Condition.DISABLED][google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition.DISABLED]. |
| SearchRequest_QueryExpansionSpec_CONDITION_UNSPECIFIED SearchRequest_QueryExpansionSpec_Condition = 0 |
| // Disabled query expansion. Only the exact search query is used, even if |
| // [SearchResponse.total_size][google.cloud.retail.v2beta.SearchResponse.total_size] |
| // is zero. |
| SearchRequest_QueryExpansionSpec_DISABLED SearchRequest_QueryExpansionSpec_Condition = 1 |
| // Automatic query expansion built by Google Retail Search. |
| SearchRequest_QueryExpansionSpec_AUTO SearchRequest_QueryExpansionSpec_Condition = 3 |
| ) |
| |
| // Enum value maps for SearchRequest_QueryExpansionSpec_Condition. |
| var ( |
| SearchRequest_QueryExpansionSpec_Condition_name = map[int32]string{ |
| 0: "CONDITION_UNSPECIFIED", |
| 1: "DISABLED", |
| 3: "AUTO", |
| } |
| SearchRequest_QueryExpansionSpec_Condition_value = map[string]int32{ |
| "CONDITION_UNSPECIFIED": 0, |
| "DISABLED": 1, |
| "AUTO": 3, |
| } |
| ) |
| |
| func (x SearchRequest_QueryExpansionSpec_Condition) Enum() *SearchRequest_QueryExpansionSpec_Condition { |
| p := new(SearchRequest_QueryExpansionSpec_Condition) |
| *p = x |
| return p |
| } |
| |
| func (x SearchRequest_QueryExpansionSpec_Condition) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (SearchRequest_QueryExpansionSpec_Condition) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_cloud_retail_v2beta_search_service_proto_enumTypes[2].Descriptor() |
| } |
| |
| func (SearchRequest_QueryExpansionSpec_Condition) Type() protoreflect.EnumType { |
| return &file_google_cloud_retail_v2beta_search_service_proto_enumTypes[2] |
| } |
| |
| func (x SearchRequest_QueryExpansionSpec_Condition) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use SearchRequest_QueryExpansionSpec_Condition.Descriptor instead. |
| func (SearchRequest_QueryExpansionSpec_Condition) EnumDescriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 3, 0} |
| } |
| |
| // The personalization mode of each search request. |
| type SearchRequest_PersonalizationSpec_Mode int32 |
| |
| const ( |
| // Default value. In this case, server behavior defaults to |
| // [Mode.AUTO][google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode.AUTO]. |
| SearchRequest_PersonalizationSpec_MODE_UNSPECIFIED SearchRequest_PersonalizationSpec_Mode = 0 |
| // Let CRS decide whether to use personalization based on quality of user |
| // event data. |
| SearchRequest_PersonalizationSpec_AUTO SearchRequest_PersonalizationSpec_Mode = 1 |
| // Disable personalization. |
| SearchRequest_PersonalizationSpec_DISABLED SearchRequest_PersonalizationSpec_Mode = 2 |
| ) |
| |
| // Enum value maps for SearchRequest_PersonalizationSpec_Mode. |
| var ( |
| SearchRequest_PersonalizationSpec_Mode_name = map[int32]string{ |
| 0: "MODE_UNSPECIFIED", |
| 1: "AUTO", |
| 2: "DISABLED", |
| } |
| SearchRequest_PersonalizationSpec_Mode_value = map[string]int32{ |
| "MODE_UNSPECIFIED": 0, |
| "AUTO": 1, |
| "DISABLED": 2, |
| } |
| ) |
| |
| func (x SearchRequest_PersonalizationSpec_Mode) Enum() *SearchRequest_PersonalizationSpec_Mode { |
| p := new(SearchRequest_PersonalizationSpec_Mode) |
| *p = x |
| return p |
| } |
| |
| func (x SearchRequest_PersonalizationSpec_Mode) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (SearchRequest_PersonalizationSpec_Mode) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_cloud_retail_v2beta_search_service_proto_enumTypes[3].Descriptor() |
| } |
| |
| func (SearchRequest_PersonalizationSpec_Mode) Type() protoreflect.EnumType { |
| return &file_google_cloud_retail_v2beta_search_service_proto_enumTypes[3] |
| } |
| |
| func (x SearchRequest_PersonalizationSpec_Mode) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use SearchRequest_PersonalizationSpec_Mode.Descriptor instead. |
| func (SearchRequest_PersonalizationSpec_Mode) EnumDescriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 4, 0} |
| } |
| |
| // Enum describing under which mode spell correction should occur. |
| type SearchRequest_SpellCorrectionSpec_Mode int32 |
| |
| const ( |
| // Unspecified spell correction mode. In this case, server behavior |
| // defaults to |
| // [Mode.AUTO][google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode.AUTO]. |
| SearchRequest_SpellCorrectionSpec_MODE_UNSPECIFIED SearchRequest_SpellCorrectionSpec_Mode = 0 |
| // Google Retail Search will try to find a spell suggestion if there |
| // is any and put in the |
| // [SearchResponse.corrected_query][google.cloud.retail.v2beta.SearchResponse.corrected_query]. |
| // The spell suggestion will not be used as the search query. |
| SearchRequest_SpellCorrectionSpec_SUGGESTION_ONLY SearchRequest_SpellCorrectionSpec_Mode = 1 |
| // Automatic spell correction built by Google Retail Search. Search will |
| // be based on the corrected query if found. |
| SearchRequest_SpellCorrectionSpec_AUTO SearchRequest_SpellCorrectionSpec_Mode = 2 |
| ) |
| |
| // Enum value maps for SearchRequest_SpellCorrectionSpec_Mode. |
| var ( |
| SearchRequest_SpellCorrectionSpec_Mode_name = map[int32]string{ |
| 0: "MODE_UNSPECIFIED", |
| 1: "SUGGESTION_ONLY", |
| 2: "AUTO", |
| } |
| SearchRequest_SpellCorrectionSpec_Mode_value = map[string]int32{ |
| "MODE_UNSPECIFIED": 0, |
| "SUGGESTION_ONLY": 1, |
| "AUTO": 2, |
| } |
| ) |
| |
| func (x SearchRequest_SpellCorrectionSpec_Mode) Enum() *SearchRequest_SpellCorrectionSpec_Mode { |
| p := new(SearchRequest_SpellCorrectionSpec_Mode) |
| *p = x |
| return p |
| } |
| |
| func (x SearchRequest_SpellCorrectionSpec_Mode) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (SearchRequest_SpellCorrectionSpec_Mode) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_cloud_retail_v2beta_search_service_proto_enumTypes[4].Descriptor() |
| } |
| |
| func (SearchRequest_SpellCorrectionSpec_Mode) Type() protoreflect.EnumType { |
| return &file_google_cloud_retail_v2beta_search_service_proto_enumTypes[4] |
| } |
| |
| func (x SearchRequest_SpellCorrectionSpec_Mode) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use SearchRequest_SpellCorrectionSpec_Mode.Descriptor instead. |
| func (SearchRequest_SpellCorrectionSpec_Mode) EnumDescriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 5, 0} |
| } |
| |
| // Request message for |
| // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search] |
| // method. |
| type SearchRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The resource name of the Retail Search serving config, such as |
| // `projects/*/locations/global/catalogs/default_catalog/servingConfigs/default_serving_config` |
| // or the name of the legacy placement resource, such as |
| // `projects/*/locations/global/catalogs/default_catalog/placements/default_search`. |
| // This field is used to identify the serving config name and the set |
| // of models that will be used to make the search. |
| Placement string `protobuf:"bytes,1,opt,name=placement,proto3" json:"placement,omitempty"` |
| // The branch resource name, such as |
| // `projects/*/locations/global/catalogs/default_catalog/branches/0`. |
| // |
| // Use "default_branch" as the branch ID or leave this field empty, to search |
| // products under the default branch. |
| Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` |
| // Raw search query. |
| // |
| // If this field is empty, the request is considered a category browsing |
| // request and returned results are based on |
| // [filter][google.cloud.retail.v2beta.SearchRequest.filter] and |
| // [page_categories][google.cloud.retail.v2beta.SearchRequest.page_categories]. |
| Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` |
| // Required. A unique identifier for tracking visitors. For example, this |
| // could be implemented with an HTTP cookie, which should be able to uniquely |
| // identify a visitor on a single device. This unique identifier should not |
| // change if the visitor logs in or out of the website. |
| // |
| // This should be the same identifier as |
| // [UserEvent.visitor_id][google.cloud.retail.v2beta.UserEvent.visitor_id]. |
| // |
| // The field must be a UTF-8 encoded string with a length limit of 128 |
| // characters. Otherwise, an INVALID_ARGUMENT error is returned. |
| VisitorId string `protobuf:"bytes,4,opt,name=visitor_id,json=visitorId,proto3" json:"visitor_id,omitempty"` |
| // User information. |
| UserInfo *UserInfo `protobuf:"bytes,5,opt,name=user_info,json=userInfo,proto3" json:"user_info,omitempty"` |
| // Maximum number of [Product][google.cloud.retail.v2beta.Product]s to return. |
| // If unspecified, defaults to a reasonable value. The maximum allowed value |
| // is 120. Values above 120 will be coerced to 120. |
| // |
| // If this field is negative, an INVALID_ARGUMENT is returned. |
| PageSize int32 `protobuf:"varint,7,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` |
| // A page token |
| // [SearchResponse.next_page_token][google.cloud.retail.v2beta.SearchResponse.next_page_token], |
| // received from a previous |
| // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search] |
| // call. Provide this to retrieve the subsequent page. |
| // |
| // When paginating, all other parameters provided to |
| // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search] |
| // must match the call that provided the page token. Otherwise, an |
| // INVALID_ARGUMENT error is returned. |
| PageToken string `protobuf:"bytes,8,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` |
| // A 0-indexed integer that specifies the current offset (that is, starting |
| // result location, amongst the [Product][google.cloud.retail.v2beta.Product]s |
| // deemed by the API as relevant) in search results. This field is only |
| // considered if |
| // [page_token][google.cloud.retail.v2beta.SearchRequest.page_token] is unset. |
| // |
| // If this field is negative, an INVALID_ARGUMENT is returned. |
| Offset int32 `protobuf:"varint,9,opt,name=offset,proto3" json:"offset,omitempty"` |
| // The filter syntax consists of an expression language for constructing a |
| // predicate from one or more fields of the products being filtered. Filter |
| // expression is case-sensitive. See more details at this [user |
| // guide](https://cloud.google.com/retail/docs/filter-and-order#filter). |
| // |
| // If this field is unrecognizable, an INVALID_ARGUMENT is returned. |
| Filter string `protobuf:"bytes,10,opt,name=filter,proto3" json:"filter,omitempty"` |
| // The default filter that is applied when a user performs a search without |
| // checking any filters on the search page. |
| // |
| // The filter applied to every search request when quality improvement such as |
| // query expansion is needed. For example, if a query does not have enough |
| // results, an expanded query with |
| // [SearchRequest.canonical_filter][google.cloud.retail.v2beta.SearchRequest.canonical_filter] |
| // will be returned as a supplement of the original query. This field is |
| // strongly recommended to achieve high search quality. |
| // |
| // See [SearchRequest.filter][google.cloud.retail.v2beta.SearchRequest.filter] |
| // for more details about filter syntax. |
| CanonicalFilter string `protobuf:"bytes,28,opt,name=canonical_filter,json=canonicalFilter,proto3" json:"canonical_filter,omitempty"` |
| // The order in which products are returned. Products can be ordered by |
| // a field in an [Product][google.cloud.retail.v2beta.Product] object. Leave |
| // it unset if ordered by relevance. OrderBy expression is case-sensitive. See |
| // more details at this [user |
| // guide](https://cloud.google.com/retail/docs/filter-and-order#order). |
| // |
| // If this field is unrecognizable, an INVALID_ARGUMENT is returned. |
| OrderBy string `protobuf:"bytes,11,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` |
| // Facet specifications for faceted search. If empty, no facets are returned. |
| // |
| // A maximum of 200 values are allowed. Otherwise, an INVALID_ARGUMENT error |
| // is returned. |
| FacetSpecs []*SearchRequest_FacetSpec `protobuf:"bytes,12,rep,name=facet_specs,json=facetSpecs,proto3" json:"facet_specs,omitempty"` |
| // Deprecated. Refer to https://cloud.google.com/retail/docs/configs#dynamic |
| // to enable dynamic facets. Do not set this field. |
| // |
| // The specification for dynamically generated facets. Notice that only |
| // textual facets can be dynamically generated. |
| // |
| // Deprecated: Marked as deprecated in google/cloud/retail/v2beta/search_service.proto. |
| DynamicFacetSpec *SearchRequest_DynamicFacetSpec `protobuf:"bytes,21,opt,name=dynamic_facet_spec,json=dynamicFacetSpec,proto3" json:"dynamic_facet_spec,omitempty"` |
| // Boost specification to boost certain products. See more details at this |
| // [user guide](https://cloud.google.com/retail/docs/boosting). |
| // |
| // Notice that if both |
| // [ServingConfig.boost_control_ids][google.cloud.retail.v2beta.ServingConfig.boost_control_ids] |
| // and |
| // [SearchRequest.boost_spec][google.cloud.retail.v2beta.SearchRequest.boost_spec] |
| // are set, the boost conditions from both places are evaluated. If a search |
| // request matches multiple boost conditions, the final boost score is equal |
| // to the sum of the boost scores from all matched boost conditions. |
| BoostSpec *SearchRequest_BoostSpec `protobuf:"bytes,13,opt,name=boost_spec,json=boostSpec,proto3" json:"boost_spec,omitempty"` |
| // The query expansion specification that specifies the conditions under which |
| // query expansion will occur. See more details at this [user |
| // guide](https://cloud.google.com/retail/docs/result-size#query_expansion). |
| QueryExpansionSpec *SearchRequest_QueryExpansionSpec `protobuf:"bytes,14,opt,name=query_expansion_spec,json=queryExpansionSpec,proto3" json:"query_expansion_spec,omitempty"` |
| // The keys to fetch and rollup the matching |
| // [variant][google.cloud.retail.v2beta.Product.Type.VARIANT] |
| // [Product][google.cloud.retail.v2beta.Product]s attributes, |
| // [FulfillmentInfo][google.cloud.retail.v2beta.FulfillmentInfo] or |
| // [LocalInventory][google.cloud.retail.v2beta.LocalInventory]s attributes. |
| // The attributes from all the matching |
| // [variant][google.cloud.retail.v2beta.Product.Type.VARIANT] |
| // [Product][google.cloud.retail.v2beta.Product]s or |
| // [LocalInventory][google.cloud.retail.v2beta.LocalInventory]s are merged and |
| // de-duplicated. Notice that rollup attributes will lead to extra query |
| // latency. Maximum number of keys is 30. |
| // |
| // For [FulfillmentInfo][google.cloud.retail.v2beta.FulfillmentInfo], a |
| // fulfillment type and a fulfillment ID must be provided in the format of |
| // "fulfillmentType.fulfillmentId". E.g., in "pickupInStore.store123", |
| // "pickupInStore" is fulfillment type and "store123" is the store ID. |
| // |
| // Supported keys are: |
| // |
| // - colorFamilies |
| // - price |
| // - originalPrice |
| // - discount |
| // - variantId |
| // - inventory(place_id,price) |
| // - inventory(place_id,original_price) |
| // - inventory(place_id,attributes.key), where key is any key in the |
| // [Product.local_inventories.attributes][google.cloud.retail.v2beta.LocalInventory.attributes] |
| // map. |
| // - attributes.key, where key is any key in the |
| // [Product.attributes][google.cloud.retail.v2beta.Product.attributes] map. |
| // - pickupInStore.id, where id is any |
| // |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "pickup-in-store". |
| // |
| // * shipToStore.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "ship-to-store". |
| // |
| // * sameDayDelivery.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "same-day-delivery". |
| // |
| // * nextDayDelivery.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "next-day-delivery". |
| // |
| // * customFulfillment1.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "custom-type-1". |
| // |
| // * customFulfillment2.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "custom-type-2". |
| // |
| // * customFulfillment3.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "custom-type-3". |
| // |
| // * customFulfillment4.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "custom-type-4". |
| // |
| // * customFulfillment5.id, where id is any |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // for [FulfillmentInfo.type][google.cloud.retail.v2beta.FulfillmentInfo.type] |
| // |
| // "custom-type-5". |
| // |
| // If this field is set to an invalid value other than these, an |
| // INVALID_ARGUMENT error is returned. |
| VariantRollupKeys []string `protobuf:"bytes,17,rep,name=variant_rollup_keys,json=variantRollupKeys,proto3" json:"variant_rollup_keys,omitempty"` |
| // The categories associated with a category page. Must be set for category |
| // navigation queries to achieve good search quality. The format should be |
| // the same as |
| // [UserEvent.page_categories][google.cloud.retail.v2beta.UserEvent.page_categories]; |
| // |
| // To represent full path of category, use '>' sign to separate different |
| // hierarchies. If '>' is part of the category name, replace it with |
| // other character(s). |
| // |
| // Category pages include special pages such as sales or promotions. For |
| // instance, a special sale page may have the category hierarchy: |
| // "pageCategories" : ["Sales > 2017 Black Friday Deals"]. |
| PageCategories []string `protobuf:"bytes,23,rep,name=page_categories,json=pageCategories,proto3" json:"page_categories,omitempty"` |
| // The search mode of the search request. If not specified, a single search |
| // request triggers both product search and faceted search. |
| SearchMode SearchRequest_SearchMode `protobuf:"varint,31,opt,name=search_mode,json=searchMode,proto3,enum=google.cloud.retail.v2beta.SearchRequest_SearchMode" json:"search_mode,omitempty"` |
| // The specification for personalization. |
| // |
| // Notice that if both |
| // [ServingConfig.personalization_spec][google.cloud.retail.v2beta.ServingConfig.personalization_spec] |
| // and |
| // [SearchRequest.personalization_spec][google.cloud.retail.v2beta.SearchRequest.personalization_spec] |
| // are set. |
| // [SearchRequest.personalization_spec][google.cloud.retail.v2beta.SearchRequest.personalization_spec] |
| // will override |
| // [ServingConfig.personalization_spec][google.cloud.retail.v2beta.ServingConfig.personalization_spec]. |
| PersonalizationSpec *SearchRequest_PersonalizationSpec `protobuf:"bytes,32,opt,name=personalization_spec,json=personalizationSpec,proto3" json:"personalization_spec,omitempty"` |
| // The labels applied to a resource must meet the following requirements: |
| // |
| // - Each resource can have multiple labels, up to a maximum of 64. |
| // - Each label must be a key-value pair. |
| // - Keys have a minimum length of 1 character and a maximum length of 63 |
| // characters and cannot be empty. Values can be empty and have a maximum |
| // length of 63 characters. |
| // - Keys and values can contain only lowercase letters, numeric characters, |
| // underscores, and dashes. All characters must use UTF-8 encoding, and |
| // international characters are allowed. |
| // - The key portion of a label must be unique. However, you can use the same |
| // key with multiple resources. |
| // - Keys must start with a lowercase letter or international character. |
| // |
| // See [Google Cloud |
| // Document](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements) |
| // for more details. |
| Labels map[string]string `protobuf:"bytes,34,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` |
| // The spell correction specification that specifies the mode under |
| // which spell correction will take effect. |
| SpellCorrectionSpec *SearchRequest_SpellCorrectionSpec `protobuf:"bytes,35,opt,name=spell_correction_spec,json=spellCorrectionSpec,proto3,oneof" json:"spell_correction_spec,omitempty"` |
| // The entity for customers that may run multiple different entities, domains, |
| // sites or regions, for example, `Google US`, `Google Ads`, `Waymo`, |
| // `google.com`, `youtube.com`, etc. |
| // If this is set, it should be exactly matched with |
| // [UserEvent.entity][google.cloud.retail.v2beta.UserEvent.entity] to get |
| // search results boosted by entity. |
| Entity string `protobuf:"bytes,38,opt,name=entity,proto3" json:"entity,omitempty"` |
| } |
| |
| func (x *SearchRequest) Reset() { |
| *x = SearchRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[0] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest) ProtoMessage() {} |
| |
| func (x *SearchRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[0] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead. |
| func (*SearchRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0} |
| } |
| |
| func (x *SearchRequest) GetPlacement() string { |
| if x != nil { |
| return x.Placement |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetBranch() string { |
| if x != nil { |
| return x.Branch |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetQuery() string { |
| if x != nil { |
| return x.Query |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetVisitorId() string { |
| if x != nil { |
| return x.VisitorId |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetUserInfo() *UserInfo { |
| if x != nil { |
| return x.UserInfo |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetPageSize() int32 { |
| if x != nil { |
| return x.PageSize |
| } |
| return 0 |
| } |
| |
| func (x *SearchRequest) GetPageToken() string { |
| if x != nil { |
| return x.PageToken |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetOffset() int32 { |
| if x != nil { |
| return x.Offset |
| } |
| return 0 |
| } |
| |
| func (x *SearchRequest) GetFilter() string { |
| if x != nil { |
| return x.Filter |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetCanonicalFilter() string { |
| if x != nil { |
| return x.CanonicalFilter |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetOrderBy() string { |
| if x != nil { |
| return x.OrderBy |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest) GetFacetSpecs() []*SearchRequest_FacetSpec { |
| if x != nil { |
| return x.FacetSpecs |
| } |
| return nil |
| } |
| |
| // Deprecated: Marked as deprecated in google/cloud/retail/v2beta/search_service.proto. |
| func (x *SearchRequest) GetDynamicFacetSpec() *SearchRequest_DynamicFacetSpec { |
| if x != nil { |
| return x.DynamicFacetSpec |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetBoostSpec() *SearchRequest_BoostSpec { |
| if x != nil { |
| return x.BoostSpec |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetQueryExpansionSpec() *SearchRequest_QueryExpansionSpec { |
| if x != nil { |
| return x.QueryExpansionSpec |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetVariantRollupKeys() []string { |
| if x != nil { |
| return x.VariantRollupKeys |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetPageCategories() []string { |
| if x != nil { |
| return x.PageCategories |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetSearchMode() SearchRequest_SearchMode { |
| if x != nil { |
| return x.SearchMode |
| } |
| return SearchRequest_SEARCH_MODE_UNSPECIFIED |
| } |
| |
| func (x *SearchRequest) GetPersonalizationSpec() *SearchRequest_PersonalizationSpec { |
| if x != nil { |
| return x.PersonalizationSpec |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetLabels() map[string]string { |
| if x != nil { |
| return x.Labels |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetSpellCorrectionSpec() *SearchRequest_SpellCorrectionSpec { |
| if x != nil { |
| return x.SpellCorrectionSpec |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest) GetEntity() string { |
| if x != nil { |
| return x.Entity |
| } |
| return "" |
| } |
| |
| // Response message for |
| // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search] |
| // method. |
| type SearchResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // A list of matched items. The order represents the ranking. |
| Results []*SearchResponse_SearchResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` |
| // Results of facets requested by user. |
| Facets []*SearchResponse_Facet `protobuf:"bytes,2,rep,name=facets,proto3" json:"facets,omitempty"` |
| // The estimated total count of matched items irrespective of pagination. The |
| // count of [results][google.cloud.retail.v2beta.SearchResponse.results] |
| // returned by pagination may be less than the |
| // [total_size][google.cloud.retail.v2beta.SearchResponse.total_size] that |
| // matches. |
| TotalSize int32 `protobuf:"varint,3,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"` |
| // Contains the spell corrected query, if found. If the spell correction type |
| // is AUTOMATIC, then the search results are based on corrected_query. |
| // Otherwise the original query is used for search. |
| CorrectedQuery string `protobuf:"bytes,4,opt,name=corrected_query,json=correctedQuery,proto3" json:"corrected_query,omitempty"` |
| // A unique search token. This should be included in the |
| // [UserEvent][google.cloud.retail.v2beta.UserEvent] logs resulting from this |
| // search, which enables accurate attribution of search model performance. |
| AttributionToken string `protobuf:"bytes,5,opt,name=attribution_token,json=attributionToken,proto3" json:"attribution_token,omitempty"` |
| // A token that can be sent as |
| // [SearchRequest.page_token][google.cloud.retail.v2beta.SearchRequest.page_token] |
| // to retrieve the next page. If this field is omitted, there are no |
| // subsequent pages. |
| NextPageToken string `protobuf:"bytes,6,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` |
| // Query expansion information for the returned results. |
| QueryExpansionInfo *SearchResponse_QueryExpansionInfo `protobuf:"bytes,7,opt,name=query_expansion_info,json=queryExpansionInfo,proto3" json:"query_expansion_info,omitempty"` |
| // The URI of a customer-defined redirect page. If redirect action is |
| // triggered, no search is performed, and only |
| // [redirect_uri][google.cloud.retail.v2beta.SearchResponse.redirect_uri] and |
| // [attribution_token][google.cloud.retail.v2beta.SearchResponse.attribution_token] |
| // are set in the response. |
| RedirectUri string `protobuf:"bytes,10,opt,name=redirect_uri,json=redirectUri,proto3" json:"redirect_uri,omitempty"` |
| // The fully qualified resource name of applied |
| // [controls](https://cloud.google.com/retail/docs/serving-control-rules). |
| AppliedControls []string `protobuf:"bytes,12,rep,name=applied_controls,json=appliedControls,proto3" json:"applied_controls,omitempty"` |
| // The invalid |
| // [SearchRequest.BoostSpec.condition_boost_specs][google.cloud.retail.v2beta.SearchRequest.BoostSpec.condition_boost_specs] |
| // that are not applied during serving. |
| InvalidConditionBoostSpecs []*SearchRequest_BoostSpec_ConditionBoostSpec `protobuf:"bytes,14,rep,name=invalid_condition_boost_specs,json=invalidConditionBoostSpecs,proto3" json:"invalid_condition_boost_specs,omitempty"` |
| // Metadata related to A/B testing [Experiment][] associated with this |
| // response. Only exists when an experiment is triggered. |
| ExperimentInfo []*ExperimentInfo `protobuf:"bytes,17,rep,name=experiment_info,json=experimentInfo,proto3" json:"experiment_info,omitempty"` |
| } |
| |
| func (x *SearchResponse) Reset() { |
| *x = SearchResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[1] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchResponse) ProtoMessage() {} |
| |
| func (x *SearchResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[1] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead. |
| func (*SearchResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{1} |
| } |
| |
| func (x *SearchResponse) GetResults() []*SearchResponse_SearchResult { |
| if x != nil { |
| return x.Results |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse) GetFacets() []*SearchResponse_Facet { |
| if x != nil { |
| return x.Facets |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse) GetTotalSize() int32 { |
| if x != nil { |
| return x.TotalSize |
| } |
| return 0 |
| } |
| |
| func (x *SearchResponse) GetCorrectedQuery() string { |
| if x != nil { |
| return x.CorrectedQuery |
| } |
| return "" |
| } |
| |
| func (x *SearchResponse) GetAttributionToken() string { |
| if x != nil { |
| return x.AttributionToken |
| } |
| return "" |
| } |
| |
| func (x *SearchResponse) GetNextPageToken() string { |
| if x != nil { |
| return x.NextPageToken |
| } |
| return "" |
| } |
| |
| func (x *SearchResponse) GetQueryExpansionInfo() *SearchResponse_QueryExpansionInfo { |
| if x != nil { |
| return x.QueryExpansionInfo |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse) GetRedirectUri() string { |
| if x != nil { |
| return x.RedirectUri |
| } |
| return "" |
| } |
| |
| func (x *SearchResponse) GetAppliedControls() []string { |
| if x != nil { |
| return x.AppliedControls |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse) GetInvalidConditionBoostSpecs() []*SearchRequest_BoostSpec_ConditionBoostSpec { |
| if x != nil { |
| return x.InvalidConditionBoostSpecs |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse) GetExperimentInfo() []*ExperimentInfo { |
| if x != nil { |
| return x.ExperimentInfo |
| } |
| return nil |
| } |
| |
| // Metadata for active A/B testing [Experiments][]. |
| type ExperimentInfo struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Information associated with the specific experiment entity being recorded. |
| // |
| // Types that are assignable to ExperimentMetadata: |
| // |
| // *ExperimentInfo_ServingConfigExperiment_ |
| ExperimentMetadata isExperimentInfo_ExperimentMetadata `protobuf_oneof:"experiment_metadata"` |
| // The fully qualified resource name of the experiment that provides the |
| // serving config under test, should an active experiment exist. For example: |
| // `projects/*/locations/global/catalogs/default_catalog/experiments/experiment_id` |
| Experiment string `protobuf:"bytes,1,opt,name=experiment,proto3" json:"experiment,omitempty"` |
| } |
| |
| func (x *ExperimentInfo) Reset() { |
| *x = ExperimentInfo{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[2] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ExperimentInfo) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ExperimentInfo) ProtoMessage() {} |
| |
| func (x *ExperimentInfo) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[2] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ExperimentInfo.ProtoReflect.Descriptor instead. |
| func (*ExperimentInfo) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{2} |
| } |
| |
| func (m *ExperimentInfo) GetExperimentMetadata() isExperimentInfo_ExperimentMetadata { |
| if m != nil { |
| return m.ExperimentMetadata |
| } |
| return nil |
| } |
| |
| func (x *ExperimentInfo) GetServingConfigExperiment() *ExperimentInfo_ServingConfigExperiment { |
| if x, ok := x.GetExperimentMetadata().(*ExperimentInfo_ServingConfigExperiment_); ok { |
| return x.ServingConfigExperiment |
| } |
| return nil |
| } |
| |
| func (x *ExperimentInfo) GetExperiment() string { |
| if x != nil { |
| return x.Experiment |
| } |
| return "" |
| } |
| |
| type isExperimentInfo_ExperimentMetadata interface { |
| isExperimentInfo_ExperimentMetadata() |
| } |
| |
| type ExperimentInfo_ServingConfigExperiment_ struct { |
| // A/B test between existing Cloud Retail Search |
| // [ServingConfig][google.cloud.retail.v2beta.ServingConfig]s. |
| ServingConfigExperiment *ExperimentInfo_ServingConfigExperiment `protobuf:"bytes,2,opt,name=serving_config_experiment,json=servingConfigExperiment,proto3,oneof"` |
| } |
| |
| func (*ExperimentInfo_ServingConfigExperiment_) isExperimentInfo_ExperimentMetadata() {} |
| |
| // A facet specification to perform faceted search. |
| type SearchRequest_FacetSpec struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The facet key specification. |
| FacetKey *SearchRequest_FacetSpec_FacetKey `protobuf:"bytes,1,opt,name=facet_key,json=facetKey,proto3" json:"facet_key,omitempty"` |
| // Maximum of facet values that should be returned for this facet. If |
| // unspecified, defaults to 50. The maximum allowed value is 300. Values |
| // above 300 will be coerced to 300. |
| // |
| // If this field is negative, an INVALID_ARGUMENT is returned. |
| Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` |
| // List of keys to exclude when faceting. |
| // |
| // By default, |
| // [FacetKey.key][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.key] |
| // is not excluded from the filter unless it is listed in this field. |
| // |
| // Listing a facet key in this field allows its values to appear as facet |
| // results, even when they are filtered out of search results. Using this |
| // field does not affect what search results are returned. |
| // |
| // For example, suppose there are 100 products with the color facet "Red" |
| // and 200 products with the color facet "Blue". A query containing the |
| // filter "colorFamilies:ANY("Red")" and having "colorFamilies" as |
| // [FacetKey.key][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.key] |
| // would by default return only "Red" products in the search results, and |
| // also return "Red" with count 100 as the only color facet. Although there |
| // are also blue products available, "Blue" would not be shown as an |
| // available facet value. |
| // |
| // If "colorFamilies" is listed in "excludedFilterKeys", then the query |
| // returns the facet values "Red" with count 100 and "Blue" with count |
| // 200, because the "colorFamilies" key is now excluded from the filter. |
| // Because this field doesn't affect search results, the search results |
| // are still correctly filtered to return only "Red" products. |
| // |
| // A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error |
| // is returned. |
| ExcludedFilterKeys []string `protobuf:"bytes,3,rep,name=excluded_filter_keys,json=excludedFilterKeys,proto3" json:"excluded_filter_keys,omitempty"` |
| // Enables dynamic position for this facet. If set to true, the position of |
| // this facet among all facets in the response is determined by Google |
| // Retail Search. It will be ordered together with dynamic facets if dynamic |
| // facets is enabled. If set to false, the position of this facet in the |
| // response will be the same as in the request, and it will be ranked before |
| // the facets with dynamic position enable and all dynamic facets. |
| // |
| // For example, you may always want to have rating facet returned in |
| // the response, but it's not necessarily to always display the rating facet |
| // at the top. In that case, you can set enable_dynamic_position to true so |
| // that the position of rating facet in response will be determined by |
| // Google Retail Search. |
| // |
| // Another example, assuming you have the following facets in the request: |
| // |
| // * "rating", enable_dynamic_position = true |
| // |
| // * "price", enable_dynamic_position = false |
| // |
| // * "brands", enable_dynamic_position = false |
| // |
| // And also you have a dynamic facets enable, which will generate a facet |
| // 'gender'. Then the final order of the facets in the response can be |
| // ("price", "brands", "rating", "gender") or ("price", "brands", "gender", |
| // "rating") depends on how Google Retail Search orders "gender" and |
| // "rating" facets. However, notice that "price" and "brands" will always be |
| // ranked at 1st and 2nd position since their enable_dynamic_position are |
| // false. |
| EnableDynamicPosition bool `protobuf:"varint,4,opt,name=enable_dynamic_position,json=enableDynamicPosition,proto3" json:"enable_dynamic_position,omitempty"` |
| } |
| |
| func (x *SearchRequest_FacetSpec) Reset() { |
| *x = SearchRequest_FacetSpec{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[3] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_FacetSpec) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_FacetSpec) ProtoMessage() {} |
| |
| func (x *SearchRequest_FacetSpec) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[3] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_FacetSpec.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_FacetSpec) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 0} |
| } |
| |
| func (x *SearchRequest_FacetSpec) GetFacetKey() *SearchRequest_FacetSpec_FacetKey { |
| if x != nil { |
| return x.FacetKey |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest_FacetSpec) GetLimit() int32 { |
| if x != nil { |
| return x.Limit |
| } |
| return 0 |
| } |
| |
| func (x *SearchRequest_FacetSpec) GetExcludedFilterKeys() []string { |
| if x != nil { |
| return x.ExcludedFilterKeys |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest_FacetSpec) GetEnableDynamicPosition() bool { |
| if x != nil { |
| return x.EnableDynamicPosition |
| } |
| return false |
| } |
| |
| // The specifications of dynamically generated facets. |
| type SearchRequest_DynamicFacetSpec struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Mode of the DynamicFacet feature. |
| // Defaults to |
| // [Mode.DISABLED][google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.Mode.DISABLED] |
| // if it's unset. |
| Mode SearchRequest_DynamicFacetSpec_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=google.cloud.retail.v2beta.SearchRequest_DynamicFacetSpec_Mode" json:"mode,omitempty"` |
| } |
| |
| func (x *SearchRequest_DynamicFacetSpec) Reset() { |
| *x = SearchRequest_DynamicFacetSpec{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[4] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_DynamicFacetSpec) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_DynamicFacetSpec) ProtoMessage() {} |
| |
| func (x *SearchRequest_DynamicFacetSpec) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[4] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_DynamicFacetSpec.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_DynamicFacetSpec) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 1} |
| } |
| |
| func (x *SearchRequest_DynamicFacetSpec) GetMode() SearchRequest_DynamicFacetSpec_Mode { |
| if x != nil { |
| return x.Mode |
| } |
| return SearchRequest_DynamicFacetSpec_MODE_UNSPECIFIED |
| } |
| |
| // Boost specification to boost certain items. |
| type SearchRequest_BoostSpec struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Condition boost specifications. If a product matches multiple conditions |
| // in the specifictions, boost scores from these specifications are all |
| // applied and combined in a non-linear way. Maximum number of |
| // specifications is 20. |
| ConditionBoostSpecs []*SearchRequest_BoostSpec_ConditionBoostSpec `protobuf:"bytes,1,rep,name=condition_boost_specs,json=conditionBoostSpecs,proto3" json:"condition_boost_specs,omitempty"` |
| // Whether to skip boostspec validation. If this field is set to true, |
| // invalid |
| // [BoostSpec.condition_boost_specs][google.cloud.retail.v2beta.SearchRequest.BoostSpec.condition_boost_specs] |
| // will be ignored and valid |
| // [BoostSpec.condition_boost_specs][google.cloud.retail.v2beta.SearchRequest.BoostSpec.condition_boost_specs] |
| // will still be applied. |
| SkipBoostSpecValidation *bool `protobuf:"varint,2,opt,name=skip_boost_spec_validation,json=skipBoostSpecValidation,proto3,oneof" json:"skip_boost_spec_validation,omitempty"` |
| } |
| |
| func (x *SearchRequest_BoostSpec) Reset() { |
| *x = SearchRequest_BoostSpec{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[5] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_BoostSpec) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_BoostSpec) ProtoMessage() {} |
| |
| func (x *SearchRequest_BoostSpec) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[5] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_BoostSpec.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_BoostSpec) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 2} |
| } |
| |
| func (x *SearchRequest_BoostSpec) GetConditionBoostSpecs() []*SearchRequest_BoostSpec_ConditionBoostSpec { |
| if x != nil { |
| return x.ConditionBoostSpecs |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest_BoostSpec) GetSkipBoostSpecValidation() bool { |
| if x != nil && x.SkipBoostSpecValidation != nil { |
| return *x.SkipBoostSpecValidation |
| } |
| return false |
| } |
| |
| // Specification to determine under which conditions query expansion should |
| // occur. |
| type SearchRequest_QueryExpansionSpec struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The condition under which query expansion should occur. Default to |
| // [Condition.DISABLED][google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition.DISABLED]. |
| Condition SearchRequest_QueryExpansionSpec_Condition `protobuf:"varint,1,opt,name=condition,proto3,enum=google.cloud.retail.v2beta.SearchRequest_QueryExpansionSpec_Condition" json:"condition,omitempty"` |
| // Whether to pin unexpanded results. If this field is set to true, |
| // unexpanded products are always at the top of the search results, followed |
| // by the expanded results. |
| PinUnexpandedResults bool `protobuf:"varint,2,opt,name=pin_unexpanded_results,json=pinUnexpandedResults,proto3" json:"pin_unexpanded_results,omitempty"` |
| } |
| |
| func (x *SearchRequest_QueryExpansionSpec) Reset() { |
| *x = SearchRequest_QueryExpansionSpec{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[6] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_QueryExpansionSpec) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_QueryExpansionSpec) ProtoMessage() {} |
| |
| func (x *SearchRequest_QueryExpansionSpec) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[6] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_QueryExpansionSpec.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_QueryExpansionSpec) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 3} |
| } |
| |
| func (x *SearchRequest_QueryExpansionSpec) GetCondition() SearchRequest_QueryExpansionSpec_Condition { |
| if x != nil { |
| return x.Condition |
| } |
| return SearchRequest_QueryExpansionSpec_CONDITION_UNSPECIFIED |
| } |
| |
| func (x *SearchRequest_QueryExpansionSpec) GetPinUnexpandedResults() bool { |
| if x != nil { |
| return x.PinUnexpandedResults |
| } |
| return false |
| } |
| |
| // The specification for personalization. |
| type SearchRequest_PersonalizationSpec struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Defaults to |
| // [Mode.AUTO][google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode.AUTO]. |
| Mode SearchRequest_PersonalizationSpec_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=google.cloud.retail.v2beta.SearchRequest_PersonalizationSpec_Mode" json:"mode,omitempty"` |
| } |
| |
| func (x *SearchRequest_PersonalizationSpec) Reset() { |
| *x = SearchRequest_PersonalizationSpec{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[7] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_PersonalizationSpec) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_PersonalizationSpec) ProtoMessage() {} |
| |
| func (x *SearchRequest_PersonalizationSpec) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[7] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_PersonalizationSpec.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_PersonalizationSpec) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 4} |
| } |
| |
| func (x *SearchRequest_PersonalizationSpec) GetMode() SearchRequest_PersonalizationSpec_Mode { |
| if x != nil { |
| return x.Mode |
| } |
| return SearchRequest_PersonalizationSpec_MODE_UNSPECIFIED |
| } |
| |
| // The specification for query spell correction. |
| type SearchRequest_SpellCorrectionSpec struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The mode under which spell correction should take effect to |
| // replace the original search query. Default to |
| // [Mode.AUTO][google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode.AUTO]. |
| Mode SearchRequest_SpellCorrectionSpec_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=google.cloud.retail.v2beta.SearchRequest_SpellCorrectionSpec_Mode" json:"mode,omitempty"` |
| } |
| |
| func (x *SearchRequest_SpellCorrectionSpec) Reset() { |
| *x = SearchRequest_SpellCorrectionSpec{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[8] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_SpellCorrectionSpec) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_SpellCorrectionSpec) ProtoMessage() {} |
| |
| func (x *SearchRequest_SpellCorrectionSpec) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[8] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_SpellCorrectionSpec.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_SpellCorrectionSpec) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 5} |
| } |
| |
| func (x *SearchRequest_SpellCorrectionSpec) GetMode() SearchRequest_SpellCorrectionSpec_Mode { |
| if x != nil { |
| return x.Mode |
| } |
| return SearchRequest_SpellCorrectionSpec_MODE_UNSPECIFIED |
| } |
| |
| // Specifies how a facet is computed. |
| type SearchRequest_FacetSpec_FacetKey struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Supported textual and numerical facet keys in |
| // [Product][google.cloud.retail.v2beta.Product] object, over which the |
| // facet values are computed. Facet key is case-sensitive. |
| // |
| // Allowed facet keys when |
| // [FacetKey.query][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.query] |
| // is not specified: |
| // |
| // * textual_field = |
| // - "brands" |
| // - "categories" |
| // - "genders" |
| // - "ageGroups" |
| // - "availability" |
| // - "colorFamilies" |
| // - "colors" |
| // - "sizes" |
| // - "materials" |
| // - "patterns" |
| // - "conditions" |
| // - "attributes.key" |
| // - "pickupInStore" |
| // - "shipToStore" |
| // - "sameDayDelivery" |
| // - "nextDayDelivery" |
| // - "customFulfillment1" |
| // - "customFulfillment2" |
| // - "customFulfillment3" |
| // - "customFulfillment4" |
| // - "customFulfillment5" |
| // - "inventory(place_id,attributes.key)" |
| // |
| // * numerical_field = |
| // - "price" |
| // - "discount" |
| // - "rating" |
| // - "ratingCount" |
| // - "attributes.key" |
| // - "inventory(place_id,price)" |
| // - "inventory(place_id,original_price)" |
| // - "inventory(place_id,attributes.key)" |
| Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` |
| // Set only if values should be bucketized into intervals. Must be set |
| // for facets with numerical values. Must not be set for facet with text |
| // values. Maximum number of intervals is 40. |
| // |
| // For all numerical facet keys that appear in the list of products from |
| // the catalog, the percentiles 0, 10, 30, 50, 70, 90 and 100 are |
| // computed from their distribution weekly. If the model assigns a high |
| // score to a numerical facet key and its intervals are not specified in |
| // the search request, these percentiles will become the bounds |
| // for its intervals and will be returned in the response. If the |
| // facet key intervals are specified in the request, then the specified |
| // intervals will be returned instead. |
| Intervals []*Interval `protobuf:"bytes,2,rep,name=intervals,proto3" json:"intervals,omitempty"` |
| // Only get facet for the given restricted values. For example, when using |
| // "pickupInStore" as key and set restricted values to |
| // ["store123", "store456"], only facets for "store123" and "store456" are |
| // returned. Only supported on predefined textual fields, custom textual |
| // attributes and fulfillments. Maximum is 20. |
| // |
| // Must be set for the fulfillment facet keys: |
| // |
| // * pickupInStore |
| // |
| // * shipToStore |
| // |
| // * sameDayDelivery |
| // |
| // * nextDayDelivery |
| // |
| // * customFulfillment1 |
| // |
| // * customFulfillment2 |
| // |
| // * customFulfillment3 |
| // |
| // * customFulfillment4 |
| // |
| // * customFulfillment5 |
| RestrictedValues []string `protobuf:"bytes,3,rep,name=restricted_values,json=restrictedValues,proto3" json:"restricted_values,omitempty"` |
| // Only get facet values that start with the given string prefix. For |
| // example, suppose "categories" has three values "Women > Shoe", |
| // "Women > Dress" and "Men > Shoe". If set "prefixes" to "Women", the |
| // "categories" facet will give only "Women > Shoe" and "Women > Dress". |
| // Only supported on textual fields. Maximum is 10. |
| Prefixes []string `protobuf:"bytes,8,rep,name=prefixes,proto3" json:"prefixes,omitempty"` |
| // Only get facet values that contains the given strings. For example, |
| // suppose "categories" has three values "Women > Shoe", |
| // "Women > Dress" and "Men > Shoe". If set "contains" to "Shoe", the |
| // "categories" facet will give only "Women > Shoe" and "Men > Shoe". |
| // Only supported on textual fields. Maximum is 10. |
| Contains []string `protobuf:"bytes,9,rep,name=contains,proto3" json:"contains,omitempty"` |
| // True to make facet keys case insensitive when getting faceting |
| // values with prefixes or contains; false otherwise. |
| CaseInsensitive bool `protobuf:"varint,10,opt,name=case_insensitive,json=caseInsensitive,proto3" json:"case_insensitive,omitempty"` |
| // The order in which |
| // [SearchResponse.Facet.values][google.cloud.retail.v2beta.SearchResponse.Facet.values] |
| // are returned. |
| // |
| // Allowed values are: |
| // |
| // * "count desc", which means order by |
| // [SearchResponse.Facet.values.count][google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.count] |
| // descending. |
| // |
| // * "value desc", which means order by |
| // [SearchResponse.Facet.values.value][google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.value] |
| // descending. |
| // |
| // Only applies to textual facets. |
| // |
| // If not set, textual values are sorted in [natural |
| // order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical |
| // intervals are sorted in the order given by |
| // [FacetSpec.FacetKey.intervals][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.intervals]; |
| // [FulfillmentInfo.place_ids][google.cloud.retail.v2beta.FulfillmentInfo.place_ids] |
| // are sorted in the order given by |
| // [FacetSpec.FacetKey.restricted_values][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.restricted_values]. |
| OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` |
| // The query that is used to compute facet for the given facet key. |
| // When provided, it will override the default behavior of facet |
| // computation. The query syntax is the same as a filter expression. See |
| // [SearchRequest.filter][google.cloud.retail.v2beta.SearchRequest.filter] |
| // for detail syntax and limitations. Notice that there is no limitation |
| // on |
| // [FacetKey.key][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.key] |
| // when query is specified. |
| // |
| // In the response, |
| // [SearchResponse.Facet.values.value][google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.value] |
| // will be always "1" and |
| // [SearchResponse.Facet.values.count][google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.count] |
| // will be the number of results that match the query. |
| // |
| // For example, you can set a customized facet for "shipToStore", |
| // where |
| // [FacetKey.key][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.key] |
| // is "customizedShipToStore", and |
| // [FacetKey.query][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.query] |
| // is "availability: ANY(\"IN_STOCK\") AND shipToStore: ANY(\"123\")". |
| // Then the facet will count the products that are both in stock and ship |
| // to store "123". |
| Query string `protobuf:"bytes,5,opt,name=query,proto3" json:"query,omitempty"` |
| // Returns the min and max value for each numerical facet intervals. |
| // Ignored for textual facets. |
| ReturnMinMax bool `protobuf:"varint,11,opt,name=return_min_max,json=returnMinMax,proto3" json:"return_min_max,omitempty"` |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) Reset() { |
| *x = SearchRequest_FacetSpec_FacetKey{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[10] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_FacetSpec_FacetKey) ProtoMessage() {} |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[10] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_FacetSpec_FacetKey.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_FacetSpec_FacetKey) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 0, 0} |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetKey() string { |
| if x != nil { |
| return x.Key |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetIntervals() []*Interval { |
| if x != nil { |
| return x.Intervals |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetRestrictedValues() []string { |
| if x != nil { |
| return x.RestrictedValues |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetPrefixes() []string { |
| if x != nil { |
| return x.Prefixes |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetContains() []string { |
| if x != nil { |
| return x.Contains |
| } |
| return nil |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetCaseInsensitive() bool { |
| if x != nil { |
| return x.CaseInsensitive |
| } |
| return false |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetOrderBy() string { |
| if x != nil { |
| return x.OrderBy |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetQuery() string { |
| if x != nil { |
| return x.Query |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest_FacetSpec_FacetKey) GetReturnMinMax() bool { |
| if x != nil { |
| return x.ReturnMinMax |
| } |
| return false |
| } |
| |
| // Boost applies to products which match a condition. |
| type SearchRequest_BoostSpec_ConditionBoostSpec struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // An expression which specifies a boost condition. The syntax and |
| // supported fields are the same as a filter expression. See |
| // [SearchRequest.filter][google.cloud.retail.v2beta.SearchRequest.filter] |
| // for detail syntax and limitations. |
| // |
| // Examples: |
| // |
| // * To boost products with product ID "product_1" or "product_2", and |
| // color |
| // |
| // "Red" or "Blue": |
| // * (id: ANY("product_1", "product_2")) AND (colorFamilies: |
| // ANY("Red","Blue")) |
| Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` |
| // Strength of the condition boost, which should be in [-1, 1]. Negative |
| // boost means demotion. Default is 0.0. |
| // |
| // Setting to 1.0 gives the item a big promotion. However, it does not |
| // necessarily mean that the boosted item will be the top result at all |
| // times, nor that other items will be excluded. Results could still be |
| // shown even when none of them matches the condition. And results that |
| // are significantly more relevant to the search query can still trump |
| // your heavily favored but irrelevant items. |
| // |
| // Setting to -1.0 gives the item a big demotion. However, results that |
| // are deeply relevant might still be shown. The item will have an |
| // upstream battle to get a fairly high ranking, but it is not blocked out |
| // completely. |
| // |
| // Setting to 0.0 means no boost applied. The boosting condition is |
| // ignored. |
| Boost float32 `protobuf:"fixed32,2,opt,name=boost,proto3" json:"boost,omitempty"` |
| } |
| |
| func (x *SearchRequest_BoostSpec_ConditionBoostSpec) Reset() { |
| *x = SearchRequest_BoostSpec_ConditionBoostSpec{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[11] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchRequest_BoostSpec_ConditionBoostSpec) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchRequest_BoostSpec_ConditionBoostSpec) ProtoMessage() {} |
| |
| func (x *SearchRequest_BoostSpec_ConditionBoostSpec) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[11] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchRequest_BoostSpec_ConditionBoostSpec.ProtoReflect.Descriptor instead. |
| func (*SearchRequest_BoostSpec_ConditionBoostSpec) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{0, 2, 0} |
| } |
| |
| func (x *SearchRequest_BoostSpec_ConditionBoostSpec) GetCondition() string { |
| if x != nil { |
| return x.Condition |
| } |
| return "" |
| } |
| |
| func (x *SearchRequest_BoostSpec_ConditionBoostSpec) GetBoost() float32 { |
| if x != nil { |
| return x.Boost |
| } |
| return 0 |
| } |
| |
| // Represents the search results. |
| type SearchResponse_SearchResult struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // [Product.id][google.cloud.retail.v2beta.Product.id] of the searched |
| // [Product][google.cloud.retail.v2beta.Product]. |
| Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` |
| // The product data snippet in the search response. Only |
| // [Product.name][google.cloud.retail.v2beta.Product.name] is guaranteed to |
| // be populated. |
| // |
| // [Product.variants][google.cloud.retail.v2beta.Product.variants] contains |
| // the product variants that match the search query. If there are multiple |
| // product variants matching the query, top 5 most relevant product variants |
| // are returned and ordered by relevancy. |
| // |
| // If relevancy can be deternmined, use |
| // [matching_variant_fields][google.cloud.retail.v2beta.SearchResponse.SearchResult.matching_variant_fields] |
| // to look up matched product variants fields. If relevancy cannot be |
| // determined, e.g. when searching "shoe" all products in a shoe product can |
| // be a match, 5 product variants are returned but order is meaningless. |
| Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` |
| // The count of matched |
| // [variant][google.cloud.retail.v2beta.Product.Type.VARIANT] |
| // [Product][google.cloud.retail.v2beta.Product]s. |
| MatchingVariantCount int32 `protobuf:"varint,3,opt,name=matching_variant_count,json=matchingVariantCount,proto3" json:"matching_variant_count,omitempty"` |
| // If a [variant][google.cloud.retail.v2beta.Product.Type.VARIANT] |
| // [Product][google.cloud.retail.v2beta.Product] matches the search query, |
| // this map indicates which [Product][google.cloud.retail.v2beta.Product] |
| // fields are matched. The key is the |
| // [Product.name][google.cloud.retail.v2beta.Product.name], the value is a |
| // field mask of the matched [Product][google.cloud.retail.v2beta.Product] |
| // fields. If matched attributes cannot be determined, this map will be |
| // empty. |
| // |
| // For example, a key "sku1" with field mask |
| // "products.color_info" indicates there is a match between |
| // "sku1" [ColorInfo][google.cloud.retail.v2beta.ColorInfo] and the query. |
| MatchingVariantFields map[string]*fieldmaskpb.FieldMask `protobuf:"bytes,4,rep,name=matching_variant_fields,json=matchingVariantFields,proto3" json:"matching_variant_fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` |
| // The rollup matching |
| // [variant][google.cloud.retail.v2beta.Product.Type.VARIANT] |
| // [Product][google.cloud.retail.v2beta.Product] attributes. The key is one |
| // of the |
| // [SearchRequest.variant_rollup_keys][google.cloud.retail.v2beta.SearchRequest.variant_rollup_keys]. |
| // The values are the merged and de-duplicated |
| // [Product][google.cloud.retail.v2beta.Product] attributes. Notice that the |
| // rollup values are respect filter. For example, when filtering by |
| // "colorFamilies:ANY(\"red\")" and rollup "colorFamilies", only "red" is |
| // returned. |
| // |
| // For textual and numerical attributes, the rollup values is a list of |
| // string or double values with type |
| // [google.protobuf.ListValue][google.protobuf.ListValue]. For example, if |
| // there are two variants with colors "red" and "blue", the rollup values |
| // are |
| // |
| // { key: "colorFamilies" |
| // value { |
| // list_value { |
| // values { string_value: "red" } |
| // values { string_value: "blue" } |
| // } |
| // } |
| // } |
| // |
| // For [FulfillmentInfo][google.cloud.retail.v2beta.FulfillmentInfo], the |
| // rollup values is a double value with type |
| // [google.protobuf.Value][google.protobuf.Value]. For example, |
| // `{key: "pickupInStore.store1" value { number_value: 10 }}` means a there |
| // are 10 variants in this product are available in the store "store1". |
| VariantRollupValues map[string]*structpb.Value `protobuf:"bytes,5,rep,name=variant_rollup_values,json=variantRollupValues,proto3" json:"variant_rollup_values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` |
| // Specifies previous events related to this product for this user based on |
| // [UserEvent][google.cloud.retail.v2beta.UserEvent] with same |
| // [SearchRequest.visitor_id][google.cloud.retail.v2beta.SearchRequest.visitor_id] |
| // or [UserInfo.user_id][google.cloud.retail.v2beta.UserInfo.user_id]. |
| // |
| // This is set only when |
| // [SearchRequest.PersonalizationSpec.mode][google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.mode] |
| // is |
| // [SearchRequest.PersonalizationSpec.Mode.AUTO][google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode.AUTO]. |
| // |
| // Possible values: |
| // |
| // * `purchased`: Indicates that this product has been purchased before. |
| PersonalLabels []string `protobuf:"bytes,7,rep,name=personal_labels,json=personalLabels,proto3" json:"personal_labels,omitempty"` |
| } |
| |
| func (x *SearchResponse_SearchResult) Reset() { |
| *x = SearchResponse_SearchResult{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[12] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchResponse_SearchResult) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchResponse_SearchResult) ProtoMessage() {} |
| |
| func (x *SearchResponse_SearchResult) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[12] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchResponse_SearchResult.ProtoReflect.Descriptor instead. |
| func (*SearchResponse_SearchResult) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{1, 0} |
| } |
| |
| func (x *SearchResponse_SearchResult) GetId() string { |
| if x != nil { |
| return x.Id |
| } |
| return "" |
| } |
| |
| func (x *SearchResponse_SearchResult) GetProduct() *Product { |
| if x != nil { |
| return x.Product |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse_SearchResult) GetMatchingVariantCount() int32 { |
| if x != nil { |
| return x.MatchingVariantCount |
| } |
| return 0 |
| } |
| |
| func (x *SearchResponse_SearchResult) GetMatchingVariantFields() map[string]*fieldmaskpb.FieldMask { |
| if x != nil { |
| return x.MatchingVariantFields |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse_SearchResult) GetVariantRollupValues() map[string]*structpb.Value { |
| if x != nil { |
| return x.VariantRollupValues |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse_SearchResult) GetPersonalLabels() []string { |
| if x != nil { |
| return x.PersonalLabels |
| } |
| return nil |
| } |
| |
| // A facet result. |
| type SearchResponse_Facet struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The key for this facet. E.g., "colorFamilies" or "price" or |
| // "attributes.attr1". |
| Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` |
| // The facet values for this field. |
| Values []*SearchResponse_Facet_FacetValue `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` |
| // Whether the facet is dynamically generated. |
| DynamicFacet bool `protobuf:"varint,3,opt,name=dynamic_facet,json=dynamicFacet,proto3" json:"dynamic_facet,omitempty"` |
| } |
| |
| func (x *SearchResponse_Facet) Reset() { |
| *x = SearchResponse_Facet{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[13] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchResponse_Facet) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchResponse_Facet) ProtoMessage() {} |
| |
| func (x *SearchResponse_Facet) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[13] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchResponse_Facet.ProtoReflect.Descriptor instead. |
| func (*SearchResponse_Facet) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{1, 1} |
| } |
| |
| func (x *SearchResponse_Facet) GetKey() string { |
| if x != nil { |
| return x.Key |
| } |
| return "" |
| } |
| |
| func (x *SearchResponse_Facet) GetValues() []*SearchResponse_Facet_FacetValue { |
| if x != nil { |
| return x.Values |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse_Facet) GetDynamicFacet() bool { |
| if x != nil { |
| return x.DynamicFacet |
| } |
| return false |
| } |
| |
| // Information describing query expansion including whether expansion has |
| // occurred. |
| type SearchResponse_QueryExpansionInfo struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Bool describing whether query expansion has occurred. |
| ExpandedQuery bool `protobuf:"varint,1,opt,name=expanded_query,json=expandedQuery,proto3" json:"expanded_query,omitempty"` |
| // Number of pinned results. This field will only be set when expansion |
| // happens and |
| // [SearchRequest.QueryExpansionSpec.pin_unexpanded_results][google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.pin_unexpanded_results] |
| // is set to true. |
| PinnedResultCount int64 `protobuf:"varint,2,opt,name=pinned_result_count,json=pinnedResultCount,proto3" json:"pinned_result_count,omitempty"` |
| } |
| |
| func (x *SearchResponse_QueryExpansionInfo) Reset() { |
| *x = SearchResponse_QueryExpansionInfo{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[14] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchResponse_QueryExpansionInfo) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchResponse_QueryExpansionInfo) ProtoMessage() {} |
| |
| func (x *SearchResponse_QueryExpansionInfo) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[14] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchResponse_QueryExpansionInfo.ProtoReflect.Descriptor instead. |
| func (*SearchResponse_QueryExpansionInfo) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{1, 2} |
| } |
| |
| func (x *SearchResponse_QueryExpansionInfo) GetExpandedQuery() bool { |
| if x != nil { |
| return x.ExpandedQuery |
| } |
| return false |
| } |
| |
| func (x *SearchResponse_QueryExpansionInfo) GetPinnedResultCount() int64 { |
| if x != nil { |
| return x.PinnedResultCount |
| } |
| return 0 |
| } |
| |
| // A facet value which contains value names and their count. |
| type SearchResponse_Facet_FacetValue struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // A facet value which contains values. |
| // |
| // Types that are assignable to FacetValue: |
| // |
| // *SearchResponse_Facet_FacetValue_Value |
| // *SearchResponse_Facet_FacetValue_Interval |
| FacetValue isSearchResponse_Facet_FacetValue_FacetValue `protobuf_oneof:"facet_value"` |
| // Number of items that have this facet value. |
| Count int64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` |
| // The minimum value in the |
| // [FacetValue.interval][google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.interval]. |
| // Only supported on numerical facets and returned if |
| // [SearchRequest.FacetSpec.FacetKey.return_min_max][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.return_min_max] |
| // is true. |
| MinValue float64 `protobuf:"fixed64,5,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"` |
| // The maximum value in the |
| // [FacetValue.interval][google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.interval]. |
| // Only supported on numerical facets and returned if |
| // [SearchRequest.FacetSpec.FacetKey.return_min_max][google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.return_min_max] |
| // is true. |
| MaxValue float64 `protobuf:"fixed64,6,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"` |
| } |
| |
| func (x *SearchResponse_Facet_FacetValue) Reset() { |
| *x = SearchResponse_Facet_FacetValue{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[17] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SearchResponse_Facet_FacetValue) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SearchResponse_Facet_FacetValue) ProtoMessage() {} |
| |
| func (x *SearchResponse_Facet_FacetValue) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[17] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SearchResponse_Facet_FacetValue.ProtoReflect.Descriptor instead. |
| func (*SearchResponse_Facet_FacetValue) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{1, 1, 0} |
| } |
| |
| func (m *SearchResponse_Facet_FacetValue) GetFacetValue() isSearchResponse_Facet_FacetValue_FacetValue { |
| if m != nil { |
| return m.FacetValue |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse_Facet_FacetValue) GetValue() string { |
| if x, ok := x.GetFacetValue().(*SearchResponse_Facet_FacetValue_Value); ok { |
| return x.Value |
| } |
| return "" |
| } |
| |
| func (x *SearchResponse_Facet_FacetValue) GetInterval() *Interval { |
| if x, ok := x.GetFacetValue().(*SearchResponse_Facet_FacetValue_Interval); ok { |
| return x.Interval |
| } |
| return nil |
| } |
| |
| func (x *SearchResponse_Facet_FacetValue) GetCount() int64 { |
| if x != nil { |
| return x.Count |
| } |
| return 0 |
| } |
| |
| func (x *SearchResponse_Facet_FacetValue) GetMinValue() float64 { |
| if x != nil { |
| return x.MinValue |
| } |
| return 0 |
| } |
| |
| func (x *SearchResponse_Facet_FacetValue) GetMaxValue() float64 { |
| if x != nil { |
| return x.MaxValue |
| } |
| return 0 |
| } |
| |
| type isSearchResponse_Facet_FacetValue_FacetValue interface { |
| isSearchResponse_Facet_FacetValue_FacetValue() |
| } |
| |
| type SearchResponse_Facet_FacetValue_Value struct { |
| // Text value of a facet, such as "Black" for facet "colorFamilies". |
| Value string `protobuf:"bytes,1,opt,name=value,proto3,oneof"` |
| } |
| |
| type SearchResponse_Facet_FacetValue_Interval struct { |
| // Interval value for a facet, such as [10, 20) for facet "price". |
| Interval *Interval `protobuf:"bytes,2,opt,name=interval,proto3,oneof"` |
| } |
| |
| func (*SearchResponse_Facet_FacetValue_Value) isSearchResponse_Facet_FacetValue_FacetValue() {} |
| |
| func (*SearchResponse_Facet_FacetValue_Interval) isSearchResponse_Facet_FacetValue_FacetValue() {} |
| |
| // Metadata for active serving config A/B tests. |
| type ExperimentInfo_ServingConfigExperiment struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The fully qualified resource name of the original |
| // [SearchRequest.placement][google.cloud.retail.v2beta.SearchRequest.placement] |
| // in the search request prior to reassignment by experiment API. For |
| // example: `projects/*/locations/*/catalogs/*/servingConfigs/*`. |
| OriginalServingConfig string `protobuf:"bytes,1,opt,name=original_serving_config,json=originalServingConfig,proto3" json:"original_serving_config,omitempty"` |
| // The fully qualified resource name of the serving config |
| // [VariantArm.serving_config_id][] responsible for generating the search |
| // response. For example: |
| // `projects/*/locations/*/catalogs/*/servingConfigs/*`. |
| ExperimentServingConfig string `protobuf:"bytes,2,opt,name=experiment_serving_config,json=experimentServingConfig,proto3" json:"experiment_serving_config,omitempty"` |
| } |
| |
| func (x *ExperimentInfo_ServingConfigExperiment) Reset() { |
| *x = ExperimentInfo_ServingConfigExperiment{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[18] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ExperimentInfo_ServingConfigExperiment) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ExperimentInfo_ServingConfigExperiment) ProtoMessage() {} |
| |
| func (x *ExperimentInfo_ServingConfigExperiment) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_retail_v2beta_search_service_proto_msgTypes[18] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ExperimentInfo_ServingConfigExperiment.ProtoReflect.Descriptor instead. |
| func (*ExperimentInfo_ServingConfigExperiment) Descriptor() ([]byte, []int) { |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP(), []int{2, 0} |
| } |
| |
| func (x *ExperimentInfo_ServingConfigExperiment) GetOriginalServingConfig() string { |
| if x != nil { |
| return x.OriginalServingConfig |
| } |
| return "" |
| } |
| |
| func (x *ExperimentInfo_ServingConfigExperiment) GetExperimentServingConfig() string { |
| if x != nil { |
| return x.ExperimentServingConfig |
| } |
| return "" |
| } |
| |
| var File_google_cloud_retail_v2beta_search_service_proto protoreflect.FileDescriptor |
| |
| var file_google_cloud_retail_v2beta_search_service_proto_rawDesc = []byte{ |
| 0x0a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, |
| 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x73, 0x65, 0x61, |
| 0x72, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, |
| 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x1a, 0x1c, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, |
| 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, |
| 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, |
| 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, |
| 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
| 0x1a, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, |
| 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, |
| 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, |
| 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, |
| 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, |
| 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x18, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, |
| 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, |
| 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, |
| 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, 0x41, 0x1e, 0x0a, 0x1c, 0x72, |
| 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, |
| 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x06, 0x62, 0x72, 0x61, |
| 0x6e, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x76, 0x69, 0x73, |
| 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, |
| 0x41, 0x02, 0x52, 0x09, 0x76, 0x69, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x41, 0x0a, |
| 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, |
| 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x73, |
| 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, |
| 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, |
| 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, |
| 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, |
| 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, |
| 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, |
| 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0a, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, |
| 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, |
| 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, |
| 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, |
| 0x5f, 0x62, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, |
| 0x42, 0x79, 0x12, 0x54, 0x0a, 0x0b, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, |
| 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, |
| 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, |
| 0x73, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x66, 0x61, |
| 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x6c, 0x0a, 0x12, 0x64, 0x79, 0x6e, 0x61, |
| 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x15, |
| 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, |
| 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, |
| 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, |
| 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, |
| 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, 0x63, |
| 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x52, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x5f, |
| 0x73, 0x70, 0x65, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, |
| 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, |
| 0x09, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6e, 0x0a, 0x14, 0x71, 0x75, |
| 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, |
| 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, |
| 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, |
| 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, |
| 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x12, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, |
| 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x61, |
| 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, |
| 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, |
| 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, |
| 0x67, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x17, 0x20, |
| 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, |
| 0x69, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6d, 0x6f, |
| 0x64, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, |
| 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, |
| 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, |
| 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x70, 0x0a, 0x14, 0x70, 0x65, |
| 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, |
| 0x65, 0x63, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, |
| 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, |
| 0x65, 0x73, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x13, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, |
| 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x06, |
| 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, |
| 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, |
| 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x76, 0x0a, 0x15, 0x73, |
| 0x70, 0x65, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, |
| 0x73, 0x70, 0x65, 0x63, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, |
| 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, |
| 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x13, 0x73, 0x70, 0x65, |
| 0x6c, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, |
| 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x26, 0x20, |
| 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0xba, 0x04, 0x0a, 0x09, |
| 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5e, 0x0a, 0x09, 0x66, 0x61, 0x63, |
| 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, |
| 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, |
| 0x63, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, |
| 0x08, 0x66, 0x61, 0x63, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, |
| 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, |
| 0x30, 0x0a, 0x14, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, |
| 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x65, |
| 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, |
| 0x73, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x79, 0x6e, 0x61, |
| 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, |
| 0x28, 0x08, 0x52, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, |
| 0x63, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xcc, 0x02, 0x0a, 0x08, 0x46, 0x61, |
| 0x63, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, |
| 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, |
| 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6e, |
| 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, |
| 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, |
| 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, |
| 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1a, |
| 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, |
| 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, |
| 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, |
| 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x69, |
| 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, |
| 0x52, 0x0f, 0x63, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, |
| 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, |
| 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, |
| 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, |
| 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, |
| 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x75, |
| 0x72, 0x6e, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x1a, 0xa0, 0x01, 0x0a, 0x10, 0x44, 0x79, 0x6e, |
| 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x53, 0x0a, |
| 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, |
| 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, |
| 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, |
| 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, |
| 0x64, 0x65, 0x22, 0x37, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, |
| 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, |
| 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, |
| 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a, 0xb2, 0x02, 0x0a, 0x09, |
| 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x7a, 0x0a, 0x15, 0x63, 0x6f, 0x6e, |
| 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, |
| 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, |
| 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, |
| 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, |
| 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, |
| 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, |
| 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x40, 0x0a, 0x1a, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x62, 0x6f, |
| 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x17, 0x73, 0x6b, 0x69, |
| 0x70, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x1a, 0x48, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x64, 0x69, |
| 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, |
| 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, |
| 0x6f, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x62, 0x6f, 0x6f, 0x73, |
| 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x73, 0x74, |
| 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, |
| 0x1a, 0xf0, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, |
| 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x64, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, |
| 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, |
| 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, |
| 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, |
| 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, |
| 0x16, 0x70, 0x69, 0x6e, 0x5f, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, |
| 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, |
| 0x69, 0x6e, 0x55, 0x6e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, |
| 0x6c, 0x74, 0x73, 0x22, 0x3e, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, |
| 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, |
| 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, |
| 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, |
| 0x4f, 0x10, 0x03, 0x1a, 0xa3, 0x01, 0x0a, 0x13, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, |
| 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x56, 0x0a, 0x04, 0x6d, |
| 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, |
| 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, |
| 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, |
| 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, |
| 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, |
| 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a, 0xaa, 0x01, 0x0a, 0x13, 0x53, 0x70, |
| 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, |
| 0x63, 0x12, 0x56, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, |
| 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, |
| 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, |
| 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x6c, 0x6c, |
| 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, |
| 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x04, 0x4d, 0x6f, 0x64, |
| 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, |
| 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x55, 0x47, 0x47, 0x45, |
| 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, |
| 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, |
| 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, |
| 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, |
| 0x01, 0x22, 0x5b, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, |
| 0x1b, 0x0a, 0x17, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, |
| 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, |
| 0x50, 0x52, 0x4f, 0x44, 0x55, 0x43, 0x54, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x4f, |
| 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x41, 0x43, 0x45, 0x54, 0x45, 0x44, |
| 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x42, 0x18, |
| 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x65, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, |
| 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x22, 0xd0, 0x0e, 0x0a, 0x0e, 0x53, 0x65, 0x61, |
| 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x72, |
| 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, |
| 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, |
| 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x48, |
| 0x0a, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, |
| 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, |
| 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, |
| 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, |
| 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, |
| 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, |
| 0x63, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, |
| 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, |
| 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x74, 0x74, |
| 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x26, 0x0a, |
| 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, |
| 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, |
| 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x6f, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, |
| 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, |
| 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, |
| 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, |
| 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, |
| 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, |
| 0x66, 0x6f, 0x52, 0x12, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, |
| 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, |
| 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, |
| 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, |
| 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x0c, 0x20, |
| 0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, |
| 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x1d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, |
| 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x73, 0x74, |
| 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, |
| 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, |
| 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, |
| 0x53, 0x70, 0x65, 0x63, 0x52, 0x1a, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6e, |
| 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, |
| 0x12, 0x53, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, |
| 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, |
| 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, |
| 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, |
| 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x96, 0x05, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, |
| 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, |
| 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, |
| 0x67, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, |
| 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x56, |
| 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x8a, 0x01, 0x0a, 0x17, |
| 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, |
| 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, |
| 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, |
| 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x56, |
| 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, |
| 0x79, 0x52, 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x72, 0x69, 0x61, |
| 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x76, 0x61, 0x72, |
| 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, |
| 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, |
| 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, |
| 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, |
| 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x56, |
| 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x76, 0x61, 0x72, 0x69, |
| 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, |
| 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x62, 0x65, |
| 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, |
| 0x61, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x64, 0x0a, 0x1a, 0x4d, 0x61, 0x74, 0x63, |
| 0x68, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, |
| 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, |
| 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, |
| 0x61, 0x73, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5e, |
| 0x0a, 0x18, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x56, |
| 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, |
| 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, |
| 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, |
| 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xdd, |
| 0x02, 0x0a, 0x05, 0x46, 0x61, 0x63, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x53, 0x0a, 0x06, 0x76, 0x61, |
| 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, |
| 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, |
| 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x2e, 0x46, 0x61, 0x63, |
| 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, |
| 0x23, 0x0a, 0x0d, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, |
| 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, |
| 0x61, 0x63, 0x65, 0x74, 0x1a, 0xc7, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, |
| 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x69, |
| 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, |
| 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, |
| 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, |
| 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, |
| 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, |
| 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, |
| 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, |
| 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, |
| 0x0d, 0x0a, 0x0b, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x6b, |
| 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, |
| 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, |
| 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, |
| 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x70, |
| 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, |
| 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, |
| 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd5, 0x03, 0x0a, 0x0e, |
| 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x80, |
| 0x01, 0x0a, 0x19, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, |
| 0x67, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, |
| 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, |
| 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, |
| 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x78, 0x70, 0x65, |
| 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, |
| 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, |
| 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, |
| 0x6d, 0x2f, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x78, |
| 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0xe1, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x72, |
| 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, |
| 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x60, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, |
| 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x72, 0x65, 0x74, 0x61, |
| 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, |
| 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, |
| 0x15, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, |
| 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x64, 0x0a, 0x19, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, |
| 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, |
| 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xfa, 0x41, 0x25, 0x0a, 0x23, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, |
| 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, |
| 0x66, 0x69, 0x67, 0x52, 0x17, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, |
| 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, 0x13, |
| 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, |
| 0x61, 0x74, 0x61, 0x32, 0xe8, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, |
| 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8b, 0x02, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, |
| 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, |
| 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, |
| 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, |
| 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa2, |
| 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x32, 0x62, 0x65, |
| 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, |
| 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, |
| 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, |
| 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, |
| 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0x49, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, |
| 0x61, 0x2f, 0x7b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, |
| 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, |
| 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x70, |
| 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, |
| 0x72, 0x63, 0x68, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, |
| 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, |
| 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xcb, |
| 0x02, 0xea, 0x41, 0x77, 0x0a, 0x20, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x78, 0x70, 0x65, |
| 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, |
| 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, |
| 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, |
| 0x67, 0x7d, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, |
| 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, |
| 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x42, 0x12, 0x53, 0x65, 0x61, |
| 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, |
| 0x01, 0x5a, 0x36, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x61, 0x70, |
| 0x69, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x70, 0x62, |
| 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x70, 0x62, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, |
| 0x49, 0x4c, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0xca, |
| 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, |
| 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, |
| 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x33, |
| } |
| |
| var ( |
| file_google_cloud_retail_v2beta_search_service_proto_rawDescOnce sync.Once |
| file_google_cloud_retail_v2beta_search_service_proto_rawDescData = file_google_cloud_retail_v2beta_search_service_proto_rawDesc |
| ) |
| |
| func file_google_cloud_retail_v2beta_search_service_proto_rawDescGZIP() []byte { |
| file_google_cloud_retail_v2beta_search_service_proto_rawDescOnce.Do(func() { |
| file_google_cloud_retail_v2beta_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_retail_v2beta_search_service_proto_rawDescData) |
| }) |
| return file_google_cloud_retail_v2beta_search_service_proto_rawDescData |
| } |
| |
| var file_google_cloud_retail_v2beta_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 5) |
| var file_google_cloud_retail_v2beta_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 19) |
| var file_google_cloud_retail_v2beta_search_service_proto_goTypes = []interface{}{ |
| (SearchRequest_SearchMode)(0), // 0: google.cloud.retail.v2beta.SearchRequest.SearchMode |
| (SearchRequest_DynamicFacetSpec_Mode)(0), // 1: google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.Mode |
| (SearchRequest_QueryExpansionSpec_Condition)(0), // 2: google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition |
| (SearchRequest_PersonalizationSpec_Mode)(0), // 3: google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode |
| (SearchRequest_SpellCorrectionSpec_Mode)(0), // 4: google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode |
| (*SearchRequest)(nil), // 5: google.cloud.retail.v2beta.SearchRequest |
| (*SearchResponse)(nil), // 6: google.cloud.retail.v2beta.SearchResponse |
| (*ExperimentInfo)(nil), // 7: google.cloud.retail.v2beta.ExperimentInfo |
| (*SearchRequest_FacetSpec)(nil), // 8: google.cloud.retail.v2beta.SearchRequest.FacetSpec |
| (*SearchRequest_DynamicFacetSpec)(nil), // 9: google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec |
| (*SearchRequest_BoostSpec)(nil), // 10: google.cloud.retail.v2beta.SearchRequest.BoostSpec |
| (*SearchRequest_QueryExpansionSpec)(nil), // 11: google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec |
| (*SearchRequest_PersonalizationSpec)(nil), // 12: google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec |
| (*SearchRequest_SpellCorrectionSpec)(nil), // 13: google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec |
| nil, // 14: google.cloud.retail.v2beta.SearchRequest.LabelsEntry |
| (*SearchRequest_FacetSpec_FacetKey)(nil), // 15: google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey |
| (*SearchRequest_BoostSpec_ConditionBoostSpec)(nil), // 16: google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec |
| (*SearchResponse_SearchResult)(nil), // 17: google.cloud.retail.v2beta.SearchResponse.SearchResult |
| (*SearchResponse_Facet)(nil), // 18: google.cloud.retail.v2beta.SearchResponse.Facet |
| (*SearchResponse_QueryExpansionInfo)(nil), // 19: google.cloud.retail.v2beta.SearchResponse.QueryExpansionInfo |
| nil, // 20: google.cloud.retail.v2beta.SearchResponse.SearchResult.MatchingVariantFieldsEntry |
| nil, // 21: google.cloud.retail.v2beta.SearchResponse.SearchResult.VariantRollupValuesEntry |
| (*SearchResponse_Facet_FacetValue)(nil), // 22: google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue |
| (*ExperimentInfo_ServingConfigExperiment)(nil), // 23: google.cloud.retail.v2beta.ExperimentInfo.ServingConfigExperiment |
| (*UserInfo)(nil), // 24: google.cloud.retail.v2beta.UserInfo |
| (*Interval)(nil), // 25: google.cloud.retail.v2beta.Interval |
| (*Product)(nil), // 26: google.cloud.retail.v2beta.Product |
| (*fieldmaskpb.FieldMask)(nil), // 27: google.protobuf.FieldMask |
| (*structpb.Value)(nil), // 28: google.protobuf.Value |
| } |
| var file_google_cloud_retail_v2beta_search_service_proto_depIdxs = []int32{ |
| 24, // 0: google.cloud.retail.v2beta.SearchRequest.user_info:type_name -> google.cloud.retail.v2beta.UserInfo |
| 8, // 1: google.cloud.retail.v2beta.SearchRequest.facet_specs:type_name -> google.cloud.retail.v2beta.SearchRequest.FacetSpec |
| 9, // 2: google.cloud.retail.v2beta.SearchRequest.dynamic_facet_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec |
| 10, // 3: google.cloud.retail.v2beta.SearchRequest.boost_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.BoostSpec |
| 11, // 4: google.cloud.retail.v2beta.SearchRequest.query_expansion_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec |
| 0, // 5: google.cloud.retail.v2beta.SearchRequest.search_mode:type_name -> google.cloud.retail.v2beta.SearchRequest.SearchMode |
| 12, // 6: google.cloud.retail.v2beta.SearchRequest.personalization_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec |
| 14, // 7: google.cloud.retail.v2beta.SearchRequest.labels:type_name -> google.cloud.retail.v2beta.SearchRequest.LabelsEntry |
| 13, // 8: google.cloud.retail.v2beta.SearchRequest.spell_correction_spec:type_name -> google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec |
| 17, // 9: google.cloud.retail.v2beta.SearchResponse.results:type_name -> google.cloud.retail.v2beta.SearchResponse.SearchResult |
| 18, // 10: google.cloud.retail.v2beta.SearchResponse.facets:type_name -> google.cloud.retail.v2beta.SearchResponse.Facet |
| 19, // 11: google.cloud.retail.v2beta.SearchResponse.query_expansion_info:type_name -> google.cloud.retail.v2beta.SearchResponse.QueryExpansionInfo |
| 16, // 12: google.cloud.retail.v2beta.SearchResponse.invalid_condition_boost_specs:type_name -> google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec |
| 7, // 13: google.cloud.retail.v2beta.SearchResponse.experiment_info:type_name -> google.cloud.retail.v2beta.ExperimentInfo |
| 23, // 14: google.cloud.retail.v2beta.ExperimentInfo.serving_config_experiment:type_name -> google.cloud.retail.v2beta.ExperimentInfo.ServingConfigExperiment |
| 15, // 15: google.cloud.retail.v2beta.SearchRequest.FacetSpec.facet_key:type_name -> google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey |
| 1, // 16: google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.mode:type_name -> google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.Mode |
| 16, // 17: google.cloud.retail.v2beta.SearchRequest.BoostSpec.condition_boost_specs:type_name -> google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec |
| 2, // 18: google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.condition:type_name -> google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition |
| 3, // 19: google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.mode:type_name -> google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode |
| 4, // 20: google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.mode:type_name -> google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode |
| 25, // 21: google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.intervals:type_name -> google.cloud.retail.v2beta.Interval |
| 26, // 22: google.cloud.retail.v2beta.SearchResponse.SearchResult.product:type_name -> google.cloud.retail.v2beta.Product |
| 20, // 23: google.cloud.retail.v2beta.SearchResponse.SearchResult.matching_variant_fields:type_name -> google.cloud.retail.v2beta.SearchResponse.SearchResult.MatchingVariantFieldsEntry |
| 21, // 24: google.cloud.retail.v2beta.SearchResponse.SearchResult.variant_rollup_values:type_name -> google.cloud.retail.v2beta.SearchResponse.SearchResult.VariantRollupValuesEntry |
| 22, // 25: google.cloud.retail.v2beta.SearchResponse.Facet.values:type_name -> google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue |
| 27, // 26: google.cloud.retail.v2beta.SearchResponse.SearchResult.MatchingVariantFieldsEntry.value:type_name -> google.protobuf.FieldMask |
| 28, // 27: google.cloud.retail.v2beta.SearchResponse.SearchResult.VariantRollupValuesEntry.value:type_name -> google.protobuf.Value |
| 25, // 28: google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.interval:type_name -> google.cloud.retail.v2beta.Interval |
| 5, // 29: google.cloud.retail.v2beta.SearchService.Search:input_type -> google.cloud.retail.v2beta.SearchRequest |
| 6, // 30: google.cloud.retail.v2beta.SearchService.Search:output_type -> google.cloud.retail.v2beta.SearchResponse |
| 30, // [30:31] is the sub-list for method output_type |
| 29, // [29:30] is the sub-list for method input_type |
| 29, // [29:29] is the sub-list for extension type_name |
| 29, // [29:29] is the sub-list for extension extendee |
| 0, // [0:29] is the sub-list for field type_name |
| } |
| |
| func init() { file_google_cloud_retail_v2beta_search_service_proto_init() } |
| func file_google_cloud_retail_v2beta_search_service_proto_init() { |
| if File_google_cloud_retail_v2beta_search_service_proto != nil { |
| return |
| } |
| file_google_cloud_retail_v2beta_common_proto_init() |
| file_google_cloud_retail_v2beta_product_proto_init() |
| if !protoimpl.UnsafeEnabled { |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ExperimentInfo); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_FacetSpec); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_DynamicFacetSpec); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_BoostSpec); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_QueryExpansionSpec); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_PersonalizationSpec); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_SpellCorrectionSpec); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_FacetSpec_FacetKey); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchRequest_BoostSpec_ConditionBoostSpec); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchResponse_SearchResult); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchResponse_Facet); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchResponse_QueryExpansionInfo); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SearchResponse_Facet_FacetValue); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ExperimentInfo_ServingConfigExperiment); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[0].OneofWrappers = []interface{}{} |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[2].OneofWrappers = []interface{}{ |
| (*ExperimentInfo_ServingConfigExperiment_)(nil), |
| } |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[5].OneofWrappers = []interface{}{} |
| file_google_cloud_retail_v2beta_search_service_proto_msgTypes[17].OneofWrappers = []interface{}{ |
| (*SearchResponse_Facet_FacetValue_Value)(nil), |
| (*SearchResponse_Facet_FacetValue_Interval)(nil), |
| } |
| type x struct{} |
| out := protoimpl.TypeBuilder{ |
| File: protoimpl.DescBuilder{ |
| GoPackagePath: reflect.TypeOf(x{}).PkgPath(), |
| RawDescriptor: file_google_cloud_retail_v2beta_search_service_proto_rawDesc, |
| NumEnums: 5, |
| NumMessages: 19, |
| NumExtensions: 0, |
| NumServices: 1, |
| }, |
| GoTypes: file_google_cloud_retail_v2beta_search_service_proto_goTypes, |
| DependencyIndexes: file_google_cloud_retail_v2beta_search_service_proto_depIdxs, |
| EnumInfos: file_google_cloud_retail_v2beta_search_service_proto_enumTypes, |
| MessageInfos: file_google_cloud_retail_v2beta_search_service_proto_msgTypes, |
| }.Build() |
| File_google_cloud_retail_v2beta_search_service_proto = out.File |
| file_google_cloud_retail_v2beta_search_service_proto_rawDesc = nil |
| file_google_cloud_retail_v2beta_search_service_proto_goTypes = nil |
| file_google_cloud_retail_v2beta_search_service_proto_depIdxs = nil |
| } |
| |
| // Reference imports to suppress errors if they are not otherwise used. |
| var _ context.Context |
| var _ grpc.ClientConnInterface |
| |
| // This is a compile-time assertion to ensure that this generated file |
| // is compatible with the grpc package it is being compiled against. |
| const _ = grpc.SupportPackageIsVersion6 |
| |
| // SearchServiceClient is the client API for SearchService service. |
| // |
| // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. |
| type SearchServiceClient interface { |
| // Performs a search. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Enable Retail Search on Cloud Console before using this feature. |
| Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) |
| } |
| |
| type searchServiceClient struct { |
| cc grpc.ClientConnInterface |
| } |
| |
| func NewSearchServiceClient(cc grpc.ClientConnInterface) SearchServiceClient { |
| return &searchServiceClient{cc} |
| } |
| |
| func (c *searchServiceClient) Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) { |
| out := new(SearchResponse) |
| err := c.cc.Invoke(ctx, "/google.cloud.retail.v2beta.SearchService/Search", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| // SearchServiceServer is the server API for SearchService service. |
| type SearchServiceServer interface { |
| // Performs a search. |
| // |
| // This feature is only available for users who have Retail Search enabled. |
| // Enable Retail Search on Cloud Console before using this feature. |
| Search(context.Context, *SearchRequest) (*SearchResponse, error) |
| } |
| |
| // UnimplementedSearchServiceServer can be embedded to have forward compatible implementations. |
| type UnimplementedSearchServiceServer struct { |
| } |
| |
| func (*UnimplementedSearchServiceServer) Search(context.Context, *SearchRequest) (*SearchResponse, error) { |
| return nil, status.Errorf(codes.Unimplemented, "method Search not implemented") |
| } |
| |
| func RegisterSearchServiceServer(s *grpc.Server, srv SearchServiceServer) { |
| s.RegisterService(&_SearchService_serviceDesc, srv) |
| } |
| |
| func _SearchService_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(SearchRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(SearchServiceServer).Search(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.retail.v2beta.SearchService/Search", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(SearchServiceServer).Search(ctx, req.(*SearchRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| var _SearchService_serviceDesc = grpc.ServiceDesc{ |
| ServiceName: "google.cloud.retail.v2beta.SearchService", |
| HandlerType: (*SearchServiceServer)(nil), |
| Methods: []grpc.MethodDesc{ |
| { |
| MethodName: "Search", |
| Handler: _SearchService_Search_Handler, |
| }, |
| }, |
| Streams: []grpc.StreamDesc{}, |
| Metadata: "google/cloud/retail/v2beta/search_service.proto", |
| } |