pub struct FacetKey {
    pub key: String,
    pub intervals: Vec<Interval>,
    pub restricted_values: Vec<String>,
    pub prefixes: Vec<String>,
    pub contains: Vec<String>,
    pub case_insensitive: bool,
    pub order_by: String,
    pub query: String,
    pub return_min_max: bool,
}
Expand description

Specifies how a facet is computed.

Fields§

§key: String

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)”
§intervals: Vec<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.

§restricted_values: Vec<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

§prefixes: Vec<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.

§contains: Vec<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.

§case_insensitive: bool

True to make facet keys case insensitive when getting faceting values with prefixes or contains; false otherwise.

§order_by: String

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; 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].

§query: 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 [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”.

§return_min_max: bool

Returns the min and max value for each numerical facet intervals. Ignored for textual facets.

Trait Implementations§

source§

impl Clone for FacetKey

source§

fn clone(&self) -> FacetKey

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for FacetKey

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for FacetKey

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Message for FacetKey

source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
source§

fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message to a buffer. Read more
source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
source§

fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
source§

fn decode<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes an instance of the message from a buffer. Read more
source§

fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes a length-delimited instance of the message from the buffer.
source§

fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
source§

fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
source§

impl PartialEq for FacetKey

source§

fn eq(&self, other: &FacetKey) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for FacetKey

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more