# frozen_string_literal: true # 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 # # https://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. # Auto-generated by gapic-generator-ruby. DO NOT EDIT! module Google module Cloud module Retail module V2 # Request message for # {::Google::Cloud::Retail::V2::SearchService::Client#search SearchService.Search} method. # @!attribute [rw] placement # @return [::String] # 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. # @!attribute [rw] branch # @return [::String] # 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. # @!attribute [rw] query # @return [::String] # Raw search query. # # If this field is empty, the request is considered a category browsing # request and returned results are based on # {::Google::Cloud::Retail::V2::SearchRequest#filter filter} and # {::Google::Cloud::Retail::V2::SearchRequest#page_categories page_categories}. # @!attribute [rw] visitor_id # @return [::String] # 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 # {::Google::Cloud::Retail::V2::UserEvent#visitor_id 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. # @!attribute [rw] user_info # @return [::Google::Cloud::Retail::V2::UserInfo] # User information. # @!attribute [rw] page_size # @return [::Integer] # Maximum number of {::Google::Cloud::Retail::V2::Product 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. # @!attribute [rw] page_token # @return [::String] # A page token # {::Google::Cloud::Retail::V2::SearchResponse#next_page_token SearchResponse.next_page_token}, # received from a previous # {::Google::Cloud::Retail::V2::SearchService::Client#search SearchService.Search} call. # Provide this to retrieve the subsequent page. # # When paginating, all other parameters provided to # {::Google::Cloud::Retail::V2::SearchService::Client#search SearchService.Search} must # match the call that provided the page token. Otherwise, an INVALID_ARGUMENT # error is returned. # @!attribute [rw] offset # @return [::Integer] # A 0-indexed integer that specifies the current offset (that is, starting # result location, amongst the {::Google::Cloud::Retail::V2::Product Product}s # deemed by the API as relevant) in search results. This field is only # considered if {::Google::Cloud::Retail::V2::SearchRequest#page_token page_token} # is unset. # # If this field is negative, an INVALID_ARGUMENT is returned. # @!attribute [rw] filter # @return [::String] # 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. # @!attribute [rw] canonical_filter # @return [::String] # 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 # {::Google::Cloud::Retail::V2::SearchRequest#canonical_filter SearchRequest.canonical_filter} # will be returned as a supplement of the original query. This field is # strongly recommended to achieve high search quality. # # See {::Google::Cloud::Retail::V2::SearchRequest#filter SearchRequest.filter} for # more details about filter syntax. # @!attribute [rw] order_by # @return [::String] # The order in which products are returned. Products can be ordered by # a field in an {::Google::Cloud::Retail::V2::Product 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. # @!attribute [rw] facet_specs # @return [::Array<::Google::Cloud::Retail::V2::SearchRequest::FacetSpec>] # 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. # @!attribute [rw] dynamic_facet_spec # @return [::Google::Cloud::Retail::V2::SearchRequest::DynamicFacetSpec] # 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. # @!attribute [rw] boost_spec # @return [::Google::Cloud::Retail::V2::SearchRequest::BoostSpec] # Boost specification to boost certain products. See more details at this # [user guide](https://cloud.google.com/retail/docs/boosting). # # Notice that if both # {::Google::Cloud::Retail::V2::ServingConfig#boost_control_ids ServingConfig.boost_control_ids} # and # {::Google::Cloud::Retail::V2::SearchRequest#boost_spec 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. # @!attribute [rw] query_expansion_spec # @return [::Google::Cloud::Retail::V2::SearchRequest::QueryExpansionSpec] # 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). # @!attribute [rw] variant_rollup_keys # @return [::Array<::String>] # The keys to fetch and rollup the matching # {::Google::Cloud::Retail::V2::Product::Type::VARIANT variant} # {::Google::Cloud::Retail::V2::Product Product}s attributes, # {::Google::Cloud::Retail::V2::FulfillmentInfo FulfillmentInfo} or # {::Google::Cloud::Retail::V2::LocalInventory LocalInventory}s attributes. The # attributes from all the matching # {::Google::Cloud::Retail::V2::Product::Type::VARIANT variant} # {::Google::Cloud::Retail::V2::Product Product}s or # {::Google::Cloud::Retail::V2::LocalInventory LocalInventory}s are merged and # de-duplicated. Notice that rollup attributes will lead to extra query # latency. Maximum number of keys is 30. # # For {::Google::Cloud::Retail::V2::FulfillmentInfo 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 # {::Google::Cloud::Retail::V2::LocalInventory#attributes Product.local_inventories.attributes} # map. # * attributes.key, where key is any key in the # {::Google::Cloud::Retail::V2::Product#attributes Product.attributes} map. # * pickupInStore.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "pickup-in-store". # * shipToStore.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "ship-to-store". # * sameDayDelivery.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "same-day-delivery". # * nextDayDelivery.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "next-day-delivery". # * customFulfillment1.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "custom-type-1". # * customFulfillment2.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "custom-type-2". # * customFulfillment3.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "custom-type-3". # * customFulfillment4.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "custom-type-4". # * customFulfillment5.id, where id is any # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # for {::Google::Cloud::Retail::V2::FulfillmentInfo#type FulfillmentInfo.type} # "custom-type-5". # # If this field is set to an invalid value other than these, an # INVALID_ARGUMENT error is returned. # @!attribute [rw] page_categories # @return [::Array<::String>] # The categories associated with a category page. Required for category # navigation queries to achieve good search quality. The format should be # the same as # {::Google::Cloud::Retail::V2::UserEvent#page_categories 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"]. # @!attribute [rw] search_mode # @return [::Google::Cloud::Retail::V2::SearchRequest::SearchMode] # The search mode of the search request. If not specified, a single search # request triggers both product search and faceted search. # @!attribute [rw] personalization_spec # @return [::Google::Cloud::Retail::V2::SearchRequest::PersonalizationSpec] # The specification for personalization. # # Notice that if both # {::Google::Cloud::Retail::V2::ServingConfig#personalization_spec ServingConfig.personalization_spec} # and # {::Google::Cloud::Retail::V2::SearchRequest#personalization_spec SearchRequest.personalization_spec} # are set. # {::Google::Cloud::Retail::V2::SearchRequest#personalization_spec SearchRequest.personalization_spec} # will override # {::Google::Cloud::Retail::V2::ServingConfig#personalization_spec ServingConfig.personalization_spec}. # @!attribute [rw] labels # @return [::Google::Protobuf::Map{::String => ::String}] # 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. # @!attribute [rw] spell_correction_spec # @return [::Google::Cloud::Retail::V2::SearchRequest::SpellCorrectionSpec] # The spell correction specification that specifies the mode under # which spell correction will take effect. # @!attribute [rw] entity # @return [::String] # 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 # {::Google::Cloud::Retail::V2::UserEvent#entity UserEvent.entity} to get search # results boosted by entity. class SearchRequest include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # A facet specification to perform faceted search. # @!attribute [rw] facet_key # @return [::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey] # Required. The facet key specification. # @!attribute [rw] limit # @return [::Integer] # 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. # @!attribute [rw] excluded_filter_keys # @return [::Array<::String>] # List of keys to exclude when faceting. # # # By default, # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#key 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 # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#key 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. # @!attribute [rw] enable_dynamic_position # @return [::Boolean] # 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. class FacetSpec include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Specifies how a facet is computed. # @!attribute [rw] key # @return [::String] # Required. Supported textual and numerical facet keys in # {::Google::Cloud::Retail::V2::Product Product} object, over which the facet # values are computed. Facet key is case-sensitive. # # Allowed facet keys when # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#query 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)" # @!attribute [rw] intervals # @return [::Array<::Google::Cloud::Retail::V2::Interval>] # 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. # @!attribute [rw] restricted_values # @return [::Array<::String>] # 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 # @!attribute [rw] prefixes # @return [::Array<::String>] # 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. # @!attribute [rw] contains # @return [::Array<::String>] # 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. # @!attribute [rw] case_insensitive # @return [::Boolean] # True to make facet keys case insensitive when getting faceting # values with prefixes or contains; false otherwise. # @!attribute [rw] order_by # @return [::String] # The order in which # {::Google::Cloud::Retail::V2::SearchResponse::Facet#values SearchResponse.Facet.values} # are returned. # # Allowed values are: # # * "count desc", which means order by # {::Google::Cloud::Retail::V2::SearchResponse::Facet::FacetValue#count SearchResponse.Facet.values.count} # descending. # # * "value desc", which means order by # {::Google::Cloud::Retail::V2::SearchResponse::Facet::FacetValue#value SearchResponse.Facet.values.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 # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#intervals FacetSpec.FacetKey.intervals}; # {::Google::Cloud::Retail::V2::FulfillmentInfo#place_ids FulfillmentInfo.place_ids} # are sorted in the order given by # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#restricted_values FacetSpec.FacetKey.restricted_values}. # @!attribute [rw] query # @return [::String] # 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 # {::Google::Cloud::Retail::V2::SearchRequest#filter SearchRequest.filter} for # detail syntax and limitations. Notice that there is no limitation on # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#key FacetKey.key} # when query is specified. # # In the response, # {::Google::Cloud::Retail::V2::SearchResponse::Facet::FacetValue#value SearchResponse.Facet.values.value} # will be always "1" and # {::Google::Cloud::Retail::V2::SearchResponse::Facet::FacetValue#count SearchResponse.Facet.values.count} # will be the number of results that match the query. # # For example, you can set a customized facet for "shipToStore", # where # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#key FacetKey.key} # is "customizedShipToStore", and # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#query 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". # @!attribute [rw] return_min_max # @return [::Boolean] # Returns the min and max value for each numerical facet intervals. # Ignored for textual facets. class FacetKey include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # The specifications of dynamically generated facets. # @!attribute [rw] mode # @return [::Google::Cloud::Retail::V2::SearchRequest::DynamicFacetSpec::Mode] # Mode of the DynamicFacet feature. # Defaults to # {::Google::Cloud::Retail::V2::SearchRequest::DynamicFacetSpec::Mode::DISABLED Mode.DISABLED} # if it's unset. class DynamicFacetSpec include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Enum to control DynamicFacet mode module Mode # Default value. MODE_UNSPECIFIED = 0 # Disable Dynamic Facet. DISABLED = 1 # Automatic mode built by Google Retail Search. ENABLED = 2 end end # Boost specification to boost certain items. # @!attribute [rw] condition_boost_specs # @return [::Array<::Google::Cloud::Retail::V2::SearchRequest::BoostSpec::ConditionBoostSpec>] # 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. # @!attribute [rw] skip_boost_spec_validation # @return [::Boolean] # Whether to skip boostspec validation. If this field is set to true, # invalid # {::Google::Cloud::Retail::V2::SearchRequest::BoostSpec#condition_boost_specs BoostSpec.condition_boost_specs} # will be ignored and valid # {::Google::Cloud::Retail::V2::SearchRequest::BoostSpec#condition_boost_specs BoostSpec.condition_boost_specs} # will still be applied. class BoostSpec include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Boost applies to products which match a condition. # @!attribute [rw] condition # @return [::String] # An expression which specifies a boost condition. The syntax and # supported fields are the same as a filter expression. See # {::Google::Cloud::Retail::V2::SearchRequest#filter 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")) # @!attribute [rw] boost # @return [::Float] # 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. class ConditionBoostSpec include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Specification to determine under which conditions query expansion should # occur. # @!attribute [rw] condition # @return [::Google::Cloud::Retail::V2::SearchRequest::QueryExpansionSpec::Condition] # The condition under which query expansion should occur. Default to # {::Google::Cloud::Retail::V2::SearchRequest::QueryExpansionSpec::Condition::DISABLED Condition.DISABLED}. # @!attribute [rw] pin_unexpanded_results # @return [::Boolean] # 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. class QueryExpansionSpec include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Enum describing under which condition query expansion should occur. module Condition # Unspecified query expansion condition. In this case, server behavior # defaults to # {::Google::Cloud::Retail::V2::SearchRequest::QueryExpansionSpec::Condition::DISABLED Condition.DISABLED}. CONDITION_UNSPECIFIED = 0 # Disabled query expansion. Only the exact search query is used, even if # {::Google::Cloud::Retail::V2::SearchResponse#total_size SearchResponse.total_size} # is zero. DISABLED = 1 # Automatic query expansion built by Google Retail Search. AUTO = 3 end end # The specification for personalization. # @!attribute [rw] mode # @return [::Google::Cloud::Retail::V2::SearchRequest::PersonalizationSpec::Mode] # Defaults to # {::Google::Cloud::Retail::V2::SearchRequest::PersonalizationSpec::Mode::AUTO Mode.AUTO}. class PersonalizationSpec include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The personalization mode of each search request. module Mode # Default value. In this case, server behavior defaults to # {::Google::Cloud::Retail::V2::SearchRequest::PersonalizationSpec::Mode::AUTO Mode.AUTO}. MODE_UNSPECIFIED = 0 # Let CRS decide whether to use personalization based on quality of user # event data. AUTO = 1 # Disable personalization. DISABLED = 2 end end # The specification for query spell correction. # @!attribute [rw] mode # @return [::Google::Cloud::Retail::V2::SearchRequest::SpellCorrectionSpec::Mode] # The mode under which spell correction should take effect to # replace the original search query. Default to # {::Google::Cloud::Retail::V2::SearchRequest::SpellCorrectionSpec::Mode::AUTO Mode.AUTO}. class SpellCorrectionSpec include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Enum describing under which mode spell correction should occur. module Mode # Unspecified spell correction mode. In this case, server behavior # defaults to # {::Google::Cloud::Retail::V2::SearchRequest::SpellCorrectionSpec::Mode::AUTO Mode.AUTO}. MODE_UNSPECIFIED = 0 # Google Retail Search will try to find a spell suggestion if there # is any and put in the # {::Google::Cloud::Retail::V2::SearchResponse#corrected_query SearchResponse.corrected_query}. # The spell suggestion will not be used as the search query. SUGGESTION_ONLY = 1 # Automatic spell correction built by Google Retail Search. Search will # be based on the corrected query if found. AUTO = 2 end end # @!attribute [rw] key # @return [::String] # @!attribute [rw] value # @return [::String] class LabelsEntry include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The search mode of each search request. module SearchMode # Default value. In this case both product search and faceted search will # be performed. Both # {::Google::Cloud::Retail::V2::SearchResponse::SearchResult SearchResponse.SearchResult} # and {::Google::Cloud::Retail::V2::SearchResponse::Facet SearchResponse.Facet} # will be returned. SEARCH_MODE_UNSPECIFIED = 0 # Only product search will be performed. The faceted search will be # disabled. # # Only # {::Google::Cloud::Retail::V2::SearchResponse::SearchResult SearchResponse.SearchResult} # will be returned. # {::Google::Cloud::Retail::V2::SearchResponse::Facet SearchResponse.Facet} will # not be returned, even if # {::Google::Cloud::Retail::V2::SearchRequest#facet_specs SearchRequest.facet_specs} # or # {::Google::Cloud::Retail::V2::SearchRequest#dynamic_facet_spec SearchRequest.dynamic_facet_spec} # is set. PRODUCT_SEARCH_ONLY = 1 # Only faceted search will be performed. The product search will be # disabled. # # When in this mode, one or both of # {::Google::Cloud::Retail::V2::SearchRequest#facet_specs SearchRequest.facet_specs} # and # {::Google::Cloud::Retail::V2::SearchRequest#dynamic_facet_spec SearchRequest.dynamic_facet_spec} # should be set. Otherwise, an INVALID_ARGUMENT error is returned. Only # {::Google::Cloud::Retail::V2::SearchResponse::Facet SearchResponse.Facet} will # be returned. # {::Google::Cloud::Retail::V2::SearchResponse::SearchResult SearchResponse.SearchResult} # will not be returned. FACETED_SEARCH_ONLY = 2 end end # Response message for # {::Google::Cloud::Retail::V2::SearchService::Client#search SearchService.Search} method. # @!attribute [rw] results # @return [::Array<::Google::Cloud::Retail::V2::SearchResponse::SearchResult>] # A list of matched items. The order represents the ranking. # @!attribute [rw] facets # @return [::Array<::Google::Cloud::Retail::V2::SearchResponse::Facet>] # Results of facets requested by user. # @!attribute [rw] total_size # @return [::Integer] # The estimated total count of matched items irrespective of pagination. The # count of {::Google::Cloud::Retail::V2::SearchResponse#results results} returned # by pagination may be less than the # {::Google::Cloud::Retail::V2::SearchResponse#total_size total_size} that # matches. # @!attribute [rw] corrected_query # @return [::String] # 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. # @!attribute [rw] attribution_token # @return [::String] # A unique search token. This should be included in the # {::Google::Cloud::Retail::V2::UserEvent UserEvent} logs resulting from this # search, which enables accurate attribution of search model performance. # @!attribute [rw] next_page_token # @return [::String] # A token that can be sent as # {::Google::Cloud::Retail::V2::SearchRequest#page_token SearchRequest.page_token} # to retrieve the next page. If this field is omitted, there are no # subsequent pages. # @!attribute [rw] query_expansion_info # @return [::Google::Cloud::Retail::V2::SearchResponse::QueryExpansionInfo] # Query expansion information for the returned results. # @!attribute [rw] redirect_uri # @return [::String] # The URI of a customer-defined redirect page. If redirect action is # triggered, no search is performed, and only # {::Google::Cloud::Retail::V2::SearchResponse#redirect_uri redirect_uri} and # {::Google::Cloud::Retail::V2::SearchResponse#attribution_token attribution_token} # are set in the response. # @!attribute [rw] applied_controls # @return [::Array<::String>] # The fully qualified resource name of applied # [controls](https://cloud.google.com/retail/docs/serving-control-rules). # @!attribute [rw] invalid_condition_boost_specs # @return [::Array<::Google::Cloud::Retail::V2::SearchRequest::BoostSpec::ConditionBoostSpec>] # The invalid # {::Google::Cloud::Retail::V2::SearchRequest::BoostSpec#condition_boost_specs SearchRequest.BoostSpec.condition_boost_specs} # that are not applied during serving. # @!attribute [rw] experiment_info # @return [::Array<::Google::Cloud::Retail::V2::ExperimentInfo>] # Metadata related to A/B testing [Experiment][] associated with this # response. Only exists when an experiment is triggered. class SearchResponse include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Represents the search results. # @!attribute [rw] id # @return [::String] # {::Google::Cloud::Retail::V2::Product#id Product.id} of the searched # {::Google::Cloud::Retail::V2::Product Product}. # @!attribute [rw] product # @return [::Google::Cloud::Retail::V2::Product] # The product data snippet in the search response. Only # {::Google::Cloud::Retail::V2::Product#name Product.name} is guaranteed to be # populated. # # {::Google::Cloud::Retail::V2::Product#variants 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 # {::Google::Cloud::Retail::V2::SearchResponse::SearchResult#matching_variant_fields 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. # @!attribute [rw] matching_variant_count # @return [::Integer] # The count of matched # {::Google::Cloud::Retail::V2::Product::Type::VARIANT variant} # {::Google::Cloud::Retail::V2::Product Product}s. # @!attribute [rw] matching_variant_fields # @return [::Google::Protobuf::Map{::String => ::Google::Protobuf::FieldMask}] # If a {::Google::Cloud::Retail::V2::Product::Type::VARIANT variant} # {::Google::Cloud::Retail::V2::Product Product} matches the search query, this # map indicates which {::Google::Cloud::Retail::V2::Product Product} fields are # matched. The key is the # {::Google::Cloud::Retail::V2::Product#name Product.name}, the value is a field # mask of the matched {::Google::Cloud::Retail::V2::Product 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" {::Google::Cloud::Retail::V2::ColorInfo ColorInfo} and the query. # @!attribute [rw] variant_rollup_values # @return [::Google::Protobuf::Map{::String => ::Google::Protobuf::Value}] # The rollup matching # {::Google::Cloud::Retail::V2::Product::Type::VARIANT variant} # {::Google::Cloud::Retail::V2::Product Product} attributes. The key is one of # the # {::Google::Cloud::Retail::V2::SearchRequest#variant_rollup_keys SearchRequest.variant_rollup_keys}. # The values are the merged and de-duplicated # {::Google::Cloud::Retail::V2::Product 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 {::Google::Cloud::Retail::V2::FulfillmentInfo 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". # @!attribute [rw] personal_labels # @return [::Array<::String>] # Specifies previous events related to this product for this user based on # {::Google::Cloud::Retail::V2::UserEvent UserEvent} with same # {::Google::Cloud::Retail::V2::SearchRequest#visitor_id SearchRequest.visitor_id} # or {::Google::Cloud::Retail::V2::UserInfo#user_id UserInfo.user_id}. # # This is set only when # {::Google::Cloud::Retail::V2::SearchRequest::PersonalizationSpec#mode SearchRequest.PersonalizationSpec.mode} # is # {::Google::Cloud::Retail::V2::SearchRequest::PersonalizationSpec::Mode::AUTO SearchRequest.PersonalizationSpec.Mode.AUTO}. # # Possible values: # # * `purchased`: Indicates that this product has been purchased before. class SearchResult include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # @!attribute [rw] key # @return [::String] # @!attribute [rw] value # @return [::Google::Protobuf::FieldMask] class MatchingVariantFieldsEntry include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # @!attribute [rw] key # @return [::String] # @!attribute [rw] value # @return [::Google::Protobuf::Value] class VariantRollupValuesEntry include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # A facet result. # @!attribute [rw] key # @return [::String] # The key for this facet. E.g., "colorFamilies" or "price" or # "attributes.attr1". # @!attribute [rw] values # @return [::Array<::Google::Cloud::Retail::V2::SearchResponse::Facet::FacetValue>] # The facet values for this field. # @!attribute [rw] dynamic_facet # @return [::Boolean] # Whether the facet is dynamically generated. class Facet include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # A facet value which contains value names and their count. # @!attribute [rw] value # @return [::String] # Text value of a facet, such as "Black" for facet "colorFamilies". # @!attribute [rw] interval # @return [::Google::Cloud::Retail::V2::Interval] # Interval value for a facet, such as [10, 20) for facet "price". # @!attribute [rw] count # @return [::Integer] # Number of items that have this facet value. # @!attribute [rw] min_value # @return [::Float] # The minimum value in the # {::Google::Cloud::Retail::V2::SearchResponse::Facet::FacetValue#interval FacetValue.interval}. # Only supported on numerical facets and returned if # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#return_min_max SearchRequest.FacetSpec.FacetKey.return_min_max} # is true. # @!attribute [rw] max_value # @return [::Float] # The maximum value in the # {::Google::Cloud::Retail::V2::SearchResponse::Facet::FacetValue#interval FacetValue.interval}. # Only supported on numerical facets and returned if # {::Google::Cloud::Retail::V2::SearchRequest::FacetSpec::FacetKey#return_min_max SearchRequest.FacetSpec.FacetKey.return_min_max} # is true. class FacetValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Information describing query expansion including whether expansion has # occurred. # @!attribute [rw] expanded_query # @return [::Boolean] # Bool describing whether query expansion has occurred. # @!attribute [rw] pinned_result_count # @return [::Integer] # Number of pinned results. This field will only be set when expansion # happens and # {::Google::Cloud::Retail::V2::SearchRequest::QueryExpansionSpec#pin_unexpanded_results SearchRequest.QueryExpansionSpec.pin_unexpanded_results} # is set to true. class QueryExpansionInfo include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Metadata for active A/B testing [Experiments][]. # @!attribute [rw] serving_config_experiment # @return [::Google::Cloud::Retail::V2::ExperimentInfo::ServingConfigExperiment] # A/B test between existing Cloud Retail Search # {::Google::Cloud::Retail::V2::ServingConfig ServingConfig}s. # @!attribute [rw] experiment # @return [::String] # 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` class ExperimentInfo include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Metadata for active serving config A/B tests. # @!attribute [rw] original_serving_config # @return [::String] # The fully qualified resource name of the original # {::Google::Cloud::Retail::V2::SearchRequest#placement SearchRequest.placement} # in the search request prior to reassignment by experiment API. For # example: `projects/*/locations/*/catalogs/*/servingConfigs/*`. # @!attribute [rw] experiment_serving_config # @return [::String] # 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/*`. class ServingConfigExperiment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end end end end end