completeQuery method
Completes the specified prefix with keyword suggestions.
This feature is only available for users who have Retail Search enabled. Enable Retail Search on Cloud Console before using this feature.
Request parameters:
catalog
- Required. Catalog for which the completion is performed. Full
resource name of catalog, such as projects / * /locations/global/catalogs/default_catalog
.
Value must have pattern
^projects/\[^/\]+/locations/\[^/\]+/catalogs/\[^/\]+$
.
dataset
- Determines which dataset to use for fetching completion.
"user-data" will use the dataset imported through
CompletionService.ImportCompletionData. cloud-retail
will use the
dataset generated by Cloud Retail based on user events. If left empty,
completions will be fetched from the user-data
dataset. Current
supported values: * user-data * cloud-retail: This option requires
enabling auto-learning function first. See
guidelines.
deviceType
- The device type context for completion suggestions. We
recommend that you leave this field empty. It can apply different
suggestions on different device types, e.g. DESKTOP
, MOBILE
. If it is
empty, the suggestions are across all device types. Supported formats: *
UNKNOWN_DEVICE_TYPE
* DESKTOP
* MOBILE
* A customized string starts
with OTHER_
, e.g. OTHER_IPHONE
.
enableAttributeSuggestions
- If true, attribute suggestions are enabled
and provided in the response. This field is only available for the
cloud-retail
dataset.
entity
- The entity for customers who run multiple entities, domains,
sites, or regions, for example, Google US
, Google Ads
, Waymo
,
google.com
, youtube.com
, etc. If this is set, it must be an exact
match with UserEvent.entity to get per-entity autocomplete results. This
field will be applied to completion_results
only. It has no effect on
the attribute_results
. Also, this entity should be limited to 256
characters, if too long, it will be truncated to 256 characters in both
generation and serving time, and may lead to mis-match. To ensure it
works, please set the entity with string within 256 characters.
languageCodes
- Note that this field applies for user-data
dataset
only. For requests with cloud-retail
dataset, setting this field has no
effect. The language filters applied to the output suggestions. If set, it
should contain the language of the query. If not set, suggestions are
returned without considering language restrictions. This is the BCP-47
language code, such as "en-US" or "sr-Latn". For more information, see
Tags for Identifying Languages. The
maximum number of language codes is 3.
maxSuggestions
- Completion max suggestions. If left unset or set to 0,
then will fallback to the configured value
CompletionConfig.max_suggestions. The maximum allowed max suggestions is
20. If it is set higher, it will be capped by 20.
query
- Required. The query used to generate suggestions. The maximum
number of allowed characters is 255.
visitorId
- Recommended field. 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.
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a GoogleCloudRetailV2CompleteQueryResponse.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<GoogleCloudRetailV2CompleteQueryResponse> completeQuery(
core.String catalog, {
core.String? dataset,
core.String? deviceType,
core.bool? enableAttributeSuggestions,
core.String? entity,
core.List<core.String>? languageCodes,
core.int? maxSuggestions,
core.String? query,
core.String? visitorId,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
if (dataset != null) 'dataset': [dataset],
if (deviceType != null) 'deviceType': [deviceType],
if (enableAttributeSuggestions != null)
'enableAttributeSuggestions': ['${enableAttributeSuggestions}'],
if (entity != null) 'entity': [entity],
if (languageCodes != null) 'languageCodes': languageCodes,
if (maxSuggestions != null) 'maxSuggestions': ['${maxSuggestions}'],
if (query != null) 'query': [query],
if (visitorId != null) 'visitorId': [visitorId],
if ($fields != null) 'fields': [$fields],
};
final url_ = 'v2/' + core.Uri.encodeFull('$catalog') + ':completeQuery';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GoogleCloudRetailV2CompleteQueryResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}