Class v2.SearchServiceClient

Service for search.

This feature is only available for users who have Retail Search enabled. Please submit a form [here](https://cloud.google.com/contact) to contact cloud sales if you are interested in using Retail Search. v2

Package

@google-cloud/retail

Constructors

(constructor)(opts)

constructor(opts?: ClientOptions);

Construct an instance of SearchServiceClient.

Parameter
NameDescription
opts ClientOptions

Properties

apiEndpoint

static get apiEndpoint(): string;

The DNS address for this API service - same as servicePath(), exists for compatibility reasons.

auth

auth: gax.GoogleAuth;

descriptors

descriptors: Descriptors;

innerApiCalls

innerApiCalls: {
        [name: string]: Function;
    };

pathTemplates

pathTemplates: {
        [name: string]: gax.PathTemplate;
    };

port

static get port(): number;

The port for this API service.

scopes

static get scopes(): string[];

The scopes needed to make gRPC calls for every method defined in this service.

searchServiceStub

searchServiceStub?: Promise<{
        [name: string]: Function;
    }>;

servicePath

static get servicePath(): string;

The DNS address for this API service.

warn

warn: (code: string, message: string, warnType?: string) => void;

Methods

branchPath(project, location, catalog, branch)

branchPath(project: string, location: string, catalog: string, branch: string): string;

Return a fully-qualified branch resource name string.

Parameters
NameDescription
project string
location string
catalog string
branch string
Returns
TypeDescription
string

{string} Resource name string.

catalogPath(project, location, catalog)

catalogPath(project: string, location: string, catalog: string): string;

Return a fully-qualified catalog resource name string.

Parameters
NameDescription
project string
location string
catalog string
Returns
TypeDescription
string

{string} Resource name string.

close()

close(): Promise<void>;

Terminate the gRPC channel and close the client.

The client will no longer be usable and all future behavior is undefined.

Returns
TypeDescription
Promise<void>

{Promise} A promise that resolves when the client is closed.

getProjectId()

getProjectId(): Promise<string>;
Returns
TypeDescription
Promise<string>

getProjectId(callback)

getProjectId(callback: Callback<string, undefined, undefined>): void;
Parameter
NameDescription
callback Callback<string, undefined, undefined>
Returns
TypeDescription
void

initialize()

initialize(): Promise<{
        [name: string]: Function;
    }>;

Initialize the client. Performs asynchronous operations (such as authentication) and prepares the client. This function will be called automatically when any class method is called for the first time, but if you need to initialize it before calling an actual method, feel free to call initialize() directly.

You can await on this method if you want to make sure the client is initialized.

Returns
TypeDescription
Promise<{ [name: string]: Function; }>

{Promise} A promise that resolves to an authenticated service stub.

matchBranchFromBranchName(branchName)

matchBranchFromBranchName(branchName: string): string | number;

Parse the branch from Branch resource.

Parameter
NameDescription
branchName string

A fully-qualified path representing Branch resource.

Returns
TypeDescription
string | number

{string} A string representing the branch.

matchBranchFromProductName(productName)

matchBranchFromProductName(productName: string): string | number;

Parse the branch from Product resource.

Parameter
NameDescription
productName string

A fully-qualified path representing Product resource.

Returns
TypeDescription
string | number

{string} A string representing the branch.

matchCatalogFromBranchName(branchName)

matchCatalogFromBranchName(branchName: string): string | number;

Parse the catalog from Branch resource.

Parameter
NameDescription
branchName string

A fully-qualified path representing Branch resource.

Returns
TypeDescription
string | number

{string} A string representing the catalog.

matchCatalogFromCatalogName(catalogName)

matchCatalogFromCatalogName(catalogName: string): string | number;

Parse the catalog from Catalog resource.

Parameter
NameDescription
catalogName string

A fully-qualified path representing Catalog resource.

Returns
TypeDescription
string | number

{string} A string representing the catalog.

matchCatalogFromProductName(productName)

matchCatalogFromProductName(productName: string): string | number;

Parse the catalog from Product resource.

Parameter
NameDescription
productName string

A fully-qualified path representing Product resource.

Returns
TypeDescription
string | number

{string} A string representing the catalog.

matchLocationFromBranchName(branchName)

matchLocationFromBranchName(branchName: string): string | number;

Parse the location from Branch resource.

Parameter
NameDescription
branchName string

A fully-qualified path representing Branch resource.

Returns
TypeDescription
string | number

{string} A string representing the location.

matchLocationFromCatalogName(catalogName)

matchLocationFromCatalogName(catalogName: string): string | number;

Parse the location from Catalog resource.

Parameter
NameDescription
catalogName string

A fully-qualified path representing Catalog resource.

Returns
TypeDescription
string | number

{string} A string representing the location.

matchLocationFromProductName(productName)

matchLocationFromProductName(productName: string): string | number;

Parse the location from Product resource.

Parameter
NameDescription
productName string

A fully-qualified path representing Product resource.

Returns
TypeDescription
string | number

{string} A string representing the location.

matchProductFromProductName(productName)

matchProductFromProductName(productName: string): string | number;

Parse the product from Product resource.

Parameter
NameDescription
productName string

A fully-qualified path representing Product resource.

Returns
TypeDescription
string | number

{string} A string representing the product.

matchProjectFromBranchName(branchName)

matchProjectFromBranchName(branchName: string): string | number;

Parse the project from Branch resource.

Parameter
NameDescription
branchName string

A fully-qualified path representing Branch resource.

Returns
TypeDescription
string | number

{string} A string representing the project.

matchProjectFromCatalogName(catalogName)

matchProjectFromCatalogName(catalogName: string): string | number;

Parse the project from Catalog resource.

Parameter
NameDescription
catalogName string

A fully-qualified path representing Catalog resource.

Returns
TypeDescription
string | number

{string} A string representing the project.

matchProjectFromProductName(productName)

matchProjectFromProductName(productName: string): string | number;

Parse the project from Product resource.

Parameter
NameDescription
productName string

A fully-qualified path representing Product resource.

Returns
TypeDescription
string | number

{string} A string representing the project.

productPath(project, location, catalog, branch, product)

productPath(project: string, location: string, catalog: string, branch: string, product: string): string;

Return a fully-qualified product resource name string.

Parameters
NameDescription
project string
location string
catalog string
branch string
product string
Returns
TypeDescription
string

{string} Resource name string.

search(request, options)

search(request?: protos.google.cloud.retail.v2.ISearchRequest, options?: CallOptions): Promise<[
        protos.google.cloud.retail.v2.SearchResponse.ISearchResult[],
        protos.google.cloud.retail.v2.ISearchRequest | null,
        protos.google.cloud.retail.v2.ISearchResponse
    ]>;

Performs a search.

This feature is only available for users who have Retail Search enabled. Please submit a form [here](https://cloud.google.com/contact) to contact cloud sales if you are interested in using Retail Search.

Parameters
NameDescription
request protos.google.cloud.retail.v2.ISearchRequest

The request object that will be sent.

options CallOptions

Call options. See CallOptions for more details.

Returns
TypeDescription
Promise<[ protos.google.cloud.retail.v2.SearchResponse.ISearchResult[], protos.google.cloud.retail.v2.ISearchRequest | null, protos.google.cloud.retail.v2.ISearchResponse ]>

{Promise} - The promise which resolves to an array. The first element of the array is Array of [SearchResult]. The client library will perform auto-pagination by default: it will call the API as many times as needed and will merge results from all the pages into this array. Note that it can affect your quota. We recommend using searchAsync() method described below for async iteration which you can stop as needed. Please see the [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) for more details and examples.

search(request, options, callback)

search(request: protos.google.cloud.retail.v2.ISearchRequest, options: CallOptions, callback: PaginationCallback<protos.google.cloud.retail.v2.ISearchRequest, protos.google.cloud.retail.v2.ISearchResponse | null | undefined, protos.google.cloud.retail.v2.SearchResponse.ISearchResult>): void;
Parameters
NameDescription
request protos.google.cloud.retail.v2.ISearchRequest
options CallOptions
callback PaginationCallback<protos.google.cloud.retail.v2.ISearchRequest, protos.google.cloud.retail.v2.ISearchResponse | null | undefined, protos.google.cloud.retail.v2.SearchResponse.ISearchResult>
Returns
TypeDescription
void

search(request, callback)

search(request: protos.google.cloud.retail.v2.ISearchRequest, callback: PaginationCallback<protos.google.cloud.retail.v2.ISearchRequest, protos.google.cloud.retail.v2.ISearchResponse | null | undefined, protos.google.cloud.retail.v2.SearchResponse.ISearchResult>): void;
Parameters
NameDescription
request protos.google.cloud.retail.v2.ISearchRequest
callback PaginationCallback<protos.google.cloud.retail.v2.ISearchRequest, protos.google.cloud.retail.v2.ISearchResponse | null | undefined, protos.google.cloud.retail.v2.SearchResponse.ISearchResult>
Returns
TypeDescription
void

searchAsync(request, options)

searchAsync(request?: protos.google.cloud.retail.v2.ISearchRequest, options?: CallOptions): AsyncIterable<protos.google.cloud.retail.v2.SearchResponse.ISearchResult>;

Equivalent to search, but returns an iterable object.

for-await-of syntax is used with the iterable to get response elements on-demand.

Parameters
NameDescription
request protos.google.cloud.retail.v2.ISearchRequest

The request object that will be sent.

options CallOptions

Call options. See CallOptions for more details.

Returns
TypeDescription
AsyncIterable<protos.google.cloud.retail.v2.SearchResponse.ISearchResult>

{Object} An iterable Object that allows [async iteration](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols). When you iterate the returned iterable, each element will be an object representing [SearchResult]. The API will be called under the hood as needed, once per the page, so you can stop the iteration when you don't need more results. Please see the [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) for more details and examples.

Example

  /**
   * TODO(developer): Uncomment these variables before running the sample.
   */
  /**
   *  Required. The resource name of the search engine placement, such as
   *  `projects/* /locations/global/catalogs/default_catalog/placements/default_search`.
   *  This field is used to identify the serving configuration name and the set
   *  of models that will be used to make the search.
   */
  // const placement = 'abc123'
  /**
   *  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.
   */
  // const branch = 'abc123'
  /**
   *  Raw search query.
   */
  // const query = 'abc123'
  /**
   *  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.
   *  The field must be a UTF-8 encoded string with a length limit of 128
   *  characters. Otherwise, an INVALID_ARGUMENT error is returned.
   */
  // const visitorId = 'abc123'
  /**
   *  User information.
   */
  // const userInfo = {}
  /**
   *  Maximum number of Product google.cloud.retail.v2.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.
   */
  // const pageSize = 1234
  /**
   *  A page token
   *  SearchResponse.next_page_token google.cloud.retail.v2.SearchResponse.next_page_token,
   *  received from a previous
   *  SearchService.Search google.cloud.retail.v2.SearchService.Search  call.
   *  Provide this to retrieve the subsequent page.
   *  When paginating, all other parameters provided to
   *  SearchService.Search google.cloud.retail.v2.SearchService.Search  must
   *  match the call that provided the page token. Otherwise, an INVALID_ARGUMENT
   *  error is returned.
   */
  // const pageToken = 'abc123'
  /**
   *  A 0-indexed integer that specifies the current offset (that is, starting
   *  result location, amongst the Product google.cloud.retail.v2.Product s
   *  deemed by the API as relevant) in search results. This field is only
   *  considered if page_token google.cloud.retail.v2.SearchRequest.page_token
   *  is unset.
   *  If this field is negative, an INVALID_ARGUMENT is returned.
   */
  // const offset = 1234
  /**
   *  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.
   */
  // const filter = 'abc123'
  /**
   *  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.v2.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.v2.SearchRequest.filter  for
   *  more details about filter syntax.
   */
  // const canonicalFilter = 'abc123'
  /**
   *  The order in which products are returned. Products can be ordered by
   *  a field in an Product google.cloud.retail.v2.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.
   */
  // const orderBy = 'abc123'
  /**
   *  Facet specifications for faceted search. If empty, no facets are returned.
   *  A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error
   *  is returned.
   */
  // const facetSpecs = 1234
  /**
   *  The specification for dynamically generated facets. Notice that only
   *  textual facets can be dynamically generated.
   *  This feature requires additional allowlisting. Contact Retail Search
   *  support team if you are interested in using dynamic facet feature.
   */
  // const dynamicFacetSpec = {}
  /**
   *  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   and
   *  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.
   */
  // const boostSpec = {}
  /**
   *  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).
   */
  // const queryExpansionSpec = {}
  /**
   *  The keys to fetch and rollup the matching
   *  variant google.cloud.retail.v2.Product.Type.VARIANT
   *  Product google.cloud.retail.v2.Product s attributes. The attributes from
   *  all the matching variant google.cloud.retail.v2.Product.Type.VARIANT
   *  Product google.cloud.retail.v2.Product s are merged and de-duplicated.
   *  Notice that rollup variant google.cloud.retail.v2.Product.Type.VARIANT
   *  Product google.cloud.retail.v2.Product s attributes will lead to extra
   *  query latency. Maximum number of keys is 10.
   *  For FulfillmentInfo google.cloud.retail.v2.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,attributes.key), where key is any key in the
   *    Product.inventories.attributes   map.
   *  * attributes.key, where key is any key in the
   *    Product.attributes google.cloud.retail.v2.Product.attributes  map.
   *  * pickupInStore.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "pickup-in-store".
   *  * shipToStore.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "ship-to-store".
   *  * sameDayDelivery.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "same-day-delivery".
   *  * nextDayDelivery.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "next-day-delivery".
   *  * customFulfillment1.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "custom-type-1".
   *  * customFulfillment2.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "custom-type-2".
   *  * customFulfillment3.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "custom-type-3".
   *  * customFulfillment4.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "custom-type-4".
   *  * customFulfillment5.id, where id is any
   *  FulfillmentInfo.place_ids google.cloud.retail.v2.FulfillmentInfo.place_ids
   *  for FulfillmentInfo.type google.cloud.retail.v2.FulfillmentInfo.type
   *    "custom-type-5".
   *  If this field is set to an invalid value other than these, an
   *  INVALID_ARGUMENT error is returned.
   */
  // const variantRollupKeys = 'abc123'
  /**
   *  The categories associated with a category page. Required for category
   *  navigation queries to achieve good search quality. The format should be
   *  the same as
   *  UserEvent.page_categories google.cloud.retail.v2.UserEvent.page_categories;
   *  To represent full path of category, use '>' sign to separate different
   *  hierarchies. If '>' is part of the category name, please 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".
   */
  // const pageCategories = 'abc123'
  /**
   *  The search mode of the search request. If not specified, a single search
   *  request triggers both product search and faceted search.
   */
  // const searchMode = {}

  // Imports the Retail library
  const {SearchServiceClient} = require('@google-cloud/retail').v2;

  // Instantiates a client
  const retailClient = new SearchServiceClient();

  async function callSearch() {
    // Construct request
    const request = {
      placement,
      visitorId,
    };

    // Run request
    const iterable = await retailClient.searchAsync(request);
    for await (const response of iterable) {
      console.log(response);
    }
  }

  callSearch();

searchStream(request, options)

searchStream(request?: protos.google.cloud.retail.v2.ISearchRequest, options?: CallOptions): Transform;

Equivalent to method.name.toCamelCase(), but returns a NodeJS Stream object.

Parameters
NameDescription
request protos.google.cloud.retail.v2.ISearchRequest

The request object that will be sent.

options CallOptions

Call options. See CallOptions for more details.

Returns
TypeDescription
Transform

{Stream} An object stream which emits an object representing [SearchResult] on 'data' event. The client library will perform auto-pagination by default: it will call the API as many times as needed. Note that it can affect your quota. We recommend using searchAsync() method described below for async iteration which you can stop as needed. Please see the [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) for more details and examples.