Class v2.SearchServiceClient (2.0.0)

Service for search.

This feature is only available for users who have Retail Search enabled. Please enable Retail Search on Cloud Console before using this feature. 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 enable Retail Search on Cloud Console before using this feature.

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.
   *  If this field is empty, the request is considered a category browsing
   *  request and returned results are based on
   *  filter google.cloud.retail.v2.SearchRequest.filter  and
   *  page_categories google.cloud.retail.v2.SearchRequest.page_categories.
   */
  // 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.
   *  This should be the same identifier as
   *  UserEvent.visitor_id google.cloud.retail.v2.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.
   */
  // 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 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.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
  /**
   *  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 google.cloud.retail.v2.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,
   *  FulfillmentInfo google.cloud.retail.v2.FulfillmentInfo  or
   *  LocalInventory google.cloud.retail.v2.LocalInventory s attributes. The
   *  attributes from all the matching
   *  variant google.cloud.retail.v2.Product.Type.VARIANT 
   *  Product google.cloud.retail.v2.Product s or
   *  LocalInventory google.cloud.retail.v2.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.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,original_price)
   *  * inventory(place_id,attributes.key), where key is any key in the
   *    Product.local_inventories.attributes google.cloud.retail.v2.LocalInventory.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 = {}
  /**
   *  The specification for personalization.
   */
  // const personalizationSpec = {}
  /**
   *  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.
   */
  // const labels = 1234
  /**
   *  The spell correction specification that specifies the mode under
   *  which spell correction will take effect.
   */
  // const spellCorrectionSpec = {}

  // 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.