投放控件(也称为控件)会更改返回结果时请求的默认投放行为。投放控制功能在数据存储区级层发挥作用。
例如,控制功能可以置顶和沉底结果、从返回的结果中过滤条目、将字符串彼此关联为同义词,或将结果重定向到指定的 URI。
服务控件简介
如需更改请求的结果,请先创建投放控件。然后,将该控件附加到应用的投放配置。投放配置用于配置生成投放时结果(例如搜索结果或答案)时使用的元数据。只有当服务控件附加到应用的服务配置时,该控件才会影响应用所投放的请求。
某些控制变量(例如提升控制变量)依赖于数据存储区。如果从应用中移除数据存储区,则任何依赖于数据存储区的控制变量也会从该应用中移除并变为无效,但不会被删除。
投放控制类型
您可以使用以下类型的投放控件:
控制 | 说明 | 支持的设备 |
---|---|---|
增强控制 | 更改返回结果的顺序 | 使用支持架构的数据存储区的搜索应用,例如包含结构化数据或包含元数据的非结构化数据的数据存储区 |
过滤器控件 | 从返回的结果中移除条目 | 使用支持架构的数据存储区的搜索应用,例如包含结构化数据或包含元数据的非结构化数据的数据存储区 |
同义词控件 | 将查询彼此关联 | 包含结构化或非结构化数据存储区的搜索应用 |
重定向控制 | 重定向到指定 URI | 所有搜索应用 |
推广控制 | 针对查询推广指定链接 | 包含结构化或非结构化数据存储区的搜索应用 |
关于条件
创建控制项时,您可以选择性地定义一个条件,用于确定何时应用该控制项。条件使用条件字段进行定义。以下条件字段可供使用:
queryTerms
。一种可选的控制变量,在搜索特定查询时应用。使用queryTerms
条件时,当queryTerms
的值与SearchRequest.query
中的某个字词匹配时,系统会应用相应控制。只有在将Control.searchUseCase
设置为SOLUTION_TYPE_SEARCH
时,才能使用查询字词。单个Control.condition
上最多可以指定 10 个不同的queryTerms
。如果未指定任何搜索查询字词,则系统会忽略queryTerms
字段。如需成功创建提升控制变量,您必须指定
queryTerms
字段,并将fullMatch
设置为true
或false
。activeTimeRange
。一种可选的控制措施,当请求发生在指定时间范围内时应用。它会检查收到请求的时间是否介于activeTimeRange.startTime
和activeTimeRange.endTime
之间。单个Control.condition
上最多可以指定 10 个activeTimeRange
范围。如果未指定activeTimeRange
字段,则忽略该字段。
如果为控制变量指定了多个条件,则当两种条件类型都满足时,控制变量会应用于搜索请求。如果为同一条件指定了多个值,则只需匹配其中一个值即可满足相应条件。
例如,请考虑以下指定了两个搜索字词的条件:
"queryTerms": [
{
"value": "gShoe",
"fullMatch": true
},
{
"value": "gBoot",
"fullMatch": true
}
]
对于包含 SearchRequest.query="gShoe"
的请求或包含 SearchRequest.query="gBoot"
的请求,该条件将得到满足,但对于包含 SearchRequest.query="gSandal"
或任何其他字符串的请求,该条件将无法得到满足。
如果未指定任何条件,则始终应用相应控制措施。
如需了解详情,请参阅 API 参考文档中的 Condition
字段。
创建并附加提升效果投放控件
提升投放控制是指具有 boostAction
的控制。
按照以下说明创建提升服务控制。
如需了解字段详情,请参阅 engines.controls
API 参考文档和 engines.controls.create
API 参考文档。
查找应用 ID。如果您已拥有应用 ID,请跳到下一步。
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在应用页面上,找到应用的名称,并从 ID 列获取应用的 ID。
运行以下 curl 命令以创建控制变量。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls?controlId=CONTROL_ID" \ -d '{ "displayName": "DISPLAY_NAME", "solutionType": "SOLUTION_TYPE_SEARCH", "useCases": [ "USE_CASE" ], "conditions": { "queryTerms": [ { "value": "VALUE", "fullMatch": FULL_MATCH } ], "activeTimeRange": [ { "startTime": "START_TIMESTAMP", "endTime": "END_TIMESTAMP" } ] }, "boostAction": { "boost": BOOST_VALUE, "filter": "FILTER", "dataStore": "DATA_STORE_RESOURCE_PATH" } }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。APP_ID
:应用的 ID。CONTROL_ID
:控制变量的唯一标识符。 ID 可以包含 [1-63] 个字符,这些字符可以是字母、数字、连字符和下划线。DISPLAY_NAME
:相应控件的直观易懂的名称。 Google 建议此名称应指示何时或为何使用该控件。必须是长度介于 [1,128] 之间的 UTF-8 编码字符串。USE_CASE
:必须是SEARCH_USE_CASE_SEARCH
或SEARCH_USE_CASE_BROWSE
。如果指定了SEARCH_USE_CASE_BROWSE
,则无法在条件中使用Condition.queryTerms
。CONDITION
:一个可选字段,用于定义何时应用相应控制措施。包含以下字段:VALUE
:要匹配的具体查询值。它是长度为[1, 5000]
的小写 UTF-8 字符串。如果FULL_MATCH_1
为true
,则此字段最多可以包含三个以空格分隔的字词。FULL_MATCH
:一个布尔值,用于指示搜索查询是否需要与查询字词完全匹配。如果设置为true
,则要求SearchRequest.query
与queryTerm.value
完全匹配。如果设置为false
,则要求SearchRequest.query
包含queryTerm.value
作为子字符串。START_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的开始时间。END_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的结束时间。
BOOST_VALUE
:[-1,1] 范围内的浮点数。如果该值为负值,则结果会被降级(显示在结果中更靠下的位置)。如果值为正,则结果会获得提升(显示在结果中更靠上的位置)。 如需了解详情,请参阅boostAction
。FILTER
:一个字符串,用于说明文档必须满足哪些要求。如果文档满足所有要求,则应用加权。否则,不会有任何变化。如果此字段为空,则提升会应用于数据存储区中的所有文档。如需了解过滤语法,请参阅过滤表达式语法。 注意:无法过滤文档字段title
。DATA_STORE_RESOURCE_PATH
:应通过此控制变量提升文档的数据存储区的完整资源路径。完整资源路径的格式为projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATA_STORE_ID
。此数据存储区必须附加到请求中指定的引擎。
使用
engines.servingConfigs.patch
方法将控件附加到应用的投放配置。curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?update_mask=boost_control_ids" \ -d '{ "boostControlIds": ["BOOST_ID_1", "BOOST_ID_2"] }'
将
BOOST_ID_N
替换为您在上一步中创建的控制 ID。
创建和附加过滤条件投放控件
提供控制的过滤条件定义为具有 filterAction
的控制。
按照以下说明创建过滤条件投放控制。
如需了解字段详情,请参阅 engines.controls
API 参考文档和 engines.controls.create
API 参考文档。
查找应用 ID。如果您已拥有应用 ID,请跳到下一步。
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在应用页面上,找到应用的名称,并从 ID 列获取应用的 ID。
运行以下 curl 命令以创建控制变量。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls?controlId=CONTROL_ID" \ -d '{ "displayName": "DISPLAY_NAME", "solutionType": "SOLUTION_TYPE_SEARCH", "useCases": ["USE_CASE"], "conditions": { "queryTerms": [ { "value": "VALUE", "fullMatch": FULL_MATCH } ], "activeTimeRange": [ { "startTime": "START_TIMESTAMP", "endTime": "END_TIMESTAMP" } ] }, "filterAction": { "filter": "FILTER" } }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。APP_ID
:应用的 ID。CONTROL_ID
:控制变量的唯一标识符。 ID 可以包含 [1-63] 个字符,这些字符可以是字母、数字、连字符和下划线。DISPLAY_NAME
:相应控件的直观易懂的名称。 Google 建议此名称应指示何时或为何使用该控件。必须是长度介于 [1,128] 之间的 UTF-8 编码字符串。USE_CASE
:必须是SEARCH_USE_CASE_SEARCH
或SEARCH_USE_CASE_BROWSE
。如果指定了SEARCH_USE_CASE_BROWSE
,则无法在条件中使用Condition.queryTerms
。CONDITION
:一个可选字段,用于定义何时应用相应控制措施。包含以下字段:VALUE
:要匹配的具体查询值。它是长度为[1, 5000]
的小写 UTF-8 字符串。如果FULL_MATCH_1
为true
,则此字段最多可以包含三个以空格分隔的字词。FULL_MATCH
:一个布尔值,用于指示搜索查询是否需要与查询字词完全匹配。如果设置为true
,则要求SearchRequest.query
与queryTerm.value
完全匹配。如果设置为false
,则要求SearchRequest.query
包含queryTerm.value
作为子字符串。START_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的开始时间。END_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的结束时间。
FILTER
:一个字符串,用于说明文档必须满足哪些要求。如果文档符合所有要求,则会在结果中返回该文档。否则,相应文档不会出现在结果中。 如需了解过滤语法,请参阅过滤表达式语法。 如需了解详情,请参阅filterAction
。 注意:无法过滤文档字段title
。
使用
engines.servingConfigs.patch
方法将控件附加到应用的投放配置。curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?update_mask=filter_control_ids" \ -d '{ "filterControlIds": ["FILTER_ID_1", "FILTER_ID_2"] }'
将
FILTER_ID_N
替换为您在上一步中创建的控制 ID。
创建并附加同义词投放控件
同义词投放控制是指具有 synonymsAction
的控制。
按照以下说明创建同义词投放控制。
如需了解字段详情,请参阅 engines.controls
API 参考文档和 engines.controls.create
API 参考文档。
查找应用 ID。如果您已拥有应用 ID,请跳到下一步。
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在应用页面上,找到应用的名称,并从 ID 列获取应用的 ID。
运行以下 curl 命令以创建控制变量。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls?controlId=CONTROL_ID" \ -d '{ "displayName": "DISPLAY_NAME", "solutionType": "SOLUTION_TYPE_SEARCH", "useCases": ["USE_CASE"], "conditions": { "queryTerms": [ { "value": "VALUE", "fullMatch": FULL_MATCH } ], "activeTimeRange": [ { "startTime": "START_TIMESTAMP", "endTime": "END_TIMESTAMP" } ] }, "synonymsAction": { "synonyms": ["SYNONYMS_1","SYNONYMS_2"] } }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。APP_ID
:应用的 ID。CONTROL_ID
:控制变量的唯一标识符。 ID 可以包含 [1-63] 个字符,这些字符可以是字母、数字、连字符和下划线。DISPLAY_NAME
:相应控件的直观易懂的名称。 Google 建议此名称应指示何时或为何使用该控件。必须是长度介于 [1,128] 之间的 UTF-8 编码字符串。USE_CASE
:必须是SEARCH_USE_CASE_SEARCH
或SEARCH_USE_CASE_BROWSE
。如果指定了SEARCH_USE_CASE_BROWSE
,则无法在条件中使用Condition.queryTerms
。CONDITION
:一个可选字段,用于定义何时应用相应控制措施。包含以下字段:VALUE
:要匹配的具体查询值。它是长度为[1, 5000]
的小写 UTF-8 字符串。如果FULL_MATCH_1
为true
,则此字段最多可以包含三个以空格分隔的字词。FULL_MATCH
:一个布尔值,用于指示搜索查询是否需要与查询字词完全匹配。如果设置为true
,则要求SearchRequest.query
与queryTerm.value
完全匹配。如果设置为false
,则要求SearchRequest.query
包含queryTerm.value
作为子字符串。START_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的开始时间。END_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的结束时间。
SYNONYMS_N
:彼此关联的字符串列表,可让每个字符串更有可能显示相似的结果。虽然您更有可能获得相似的结果,但当您搜索每个同义词条目时,可能无法获得所有相关联同义词的所有相关结果。您必须指定至少两个同义词,最多可指定 100 个同义词。每个同义词都必须采用 UTF-8 编码并以小写形式呈现。不允许重复的字符串。例如,您可以添加“Pixel”“Android 手机”和“Google 手机”作为同义词。 如需了解详情,请参阅synonymsAction
。
使用
engines.servingConfigs.patch
方法将控件附加到应用的投放配置。curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?update_mask=synonyms_control_ids" \ -d '{ "synonymsControlIds": ["SYNONYMS_ID_1", "SYNONYMS_ID_2"] }'
将
SYNONYMS_ID_N
替换为您在上一步中创建的控制 ID。
创建并附加重定向投放控件
重定向服务控件允许将用户重定向到提供的 URI。
重定向控件定义为具有 redirectAction
的控件。
按照以下说明创建重定向投放控制。
如需了解字段详情,请参阅 engines.controls
API 参考文档和 engines.controls.create
API 参考文档。
查找应用 ID。如果您已拥有应用 ID,请跳到下一步。
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在应用页面上,找到应用的名称,并从 ID 列获取应用的 ID。
运行以下 curl 命令以创建控制变量。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls?controlId=CONTROL_ID" \ -d '{ "displayName": "DISPLAY_NAME", "solutionType": "SOLUTION_TYPE_SEARCH", "useCases": ["USE_CASE"], "conditions": { "queryTerms": [ { "value": "VALUE", "fullMatch": FULL_MATCH } ], "activeTimeRange": [ { "startTime": "START_TIMESTAMP", "endTime": "END_TIMESTAMP" } ] }, "redirectAction": { "redirectURI": "REDIRECT_URI" } }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。APP_ID
:应用的 ID。CONTROL_ID
:控制变量的唯一标识符。 ID 可以包含 [1-63] 个字符,这些字符可以是字母、数字、连字符和下划线。DISPLAY_NAME
:相应控件的直观易懂的名称。 Google 建议此名称应指示何时或为何使用该控件。必须是长度介于 [1,128] 之间的 UTF-8 编码字符串。USE_CASE
:必须是SEARCH_USE_CASE_SEARCH
或SEARCH_USE_CASE_BROWSE
。如果指定了SEARCH_USE_CASE_BROWSE
,则无法在条件中使用Condition.queryTerms
。CONDITION
:一个可选字段,用于定义何时应用相应控制措施。包含以下字段:VALUE
:要匹配的具体查询值。它是长度为[1, 5000]
的小写 UTF-8 字符串。如果FULL_MATCH_1
为true
,则此字段最多可以包含三个以空格分隔的字词。FULL_MATCH
:一个布尔值,用于指示搜索查询是否需要与查询字词完全匹配。如果设置为true
,则要求SearchRequest.query
与queryTerm.value
完全匹配。如果设置为false
,则要求SearchRequest.query
包含queryTerm.value
作为子字符串。START_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的开始时间。END_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的结束时间。
REDIRECT_URI_N
:重定向到的 URI。长度上限为 2000 个字符。例如,如果搜索字词的值为“支持”,您可以设置重定向到技术支持页面,而不是返回(或无法返回)“支持”的搜索结果。在此示例中,重定向 URI 变为"https://www.example.com/support"
。如需了解详情,请参阅redirectAction
。
使用
engines.servingConfigs.patch
方法将控件附加到应用的投放配置。curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?update_mask=redirect_control_ids" \ -d '{ "redirectControlIds": ["REDIRECT_ID_1", "REDIRECT_ID_2"] }'
将
REDIRECT_ID_N
替换为您在上一步中创建的控制 ID。
创建并附加宣传广告投放控件
借助“推广”投放控件,您可以将链接显示为推广结果。此控件适用于具有结构化或非结构化数据存储区的搜索应用以及混合搜索应用。
如需使升级控制生效,您必须将其附加到应用的投放配置。
宣传控件使用 promoteAction
定义。
如需成功创建提升控制变量,您必须指定 queryTerms
字段,并将 fullMatch
设置为 true
或 false
。
按照以下说明创建升级投放控制变量。
如需了解字段详情,请参阅 engines.controls
API 参考文档和 engines.controls.create
API 参考文档。
查找应用 ID。如果您已拥有应用 ID,请跳到下一步。
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在应用页面上,找到应用的名称,并从 ID 列获取应用的 ID。
运行以下 curl 命令以创建控制变量。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls?controlId=CONTROL_ID" \ -d '{ "displayName": "DISPLAY_NAME", "solutionType": "SOLUTION_TYPE_SEARCH", "useCases": ["USE_CASE"], "conditions": { "queryTerms": [ { "value": "VALUE", "fullMatch": FULL_MATCH_TRUE|FALSE } ], "activeTimeRange": [ { "startTime": "START_TIMESTAMP", "endTime": "END_TIMESTAMP" } ], }, "promoteAction": { "dataStore": "DATA_STORE_RESOURCE_PATH", "searchLinkPromotion": { "document": "DOCUMENT_RESOURCE_PATH", "title": "TITLE", "uri": "URI", "description": "URI_DESCRIPTION", } } }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的编号或 ID。APP_ID
:应用的 ID。CONTROL_ID
:控制变量的唯一标识符。 ID 可以包含 [1-63] 个字符,这些字符可以是字母、数字、连字符和下划线。DISPLAY_NAME
:相应控件的直观易懂的名称。 Google 建议此名称应指示何时或为何使用该控件。必须是长度介于 [1,128] 之间的 UTF-8 编码字符串。USE_CASE
:必须是SEARCH_USE_CASE_SEARCH
或SEARCH_USE_CASE_BROWSE
。如果指定了SEARCH_USE_CASE_BROWSE
,则无法在条件中使用Condition.queryTerms
。Condition
:一个可选对象,用于定义何时应用相应控制措施。包含以下字段:queryTerms
:VALUE
:要匹配的具体查询值。这是一个长度为[1, 5000]
的小写 UTF-8 字符串。FULL_MATCH_TRUE|FALSE
:一个布尔值,用于指示查询字词是否必须完全匹配。
activeTimeRange
:START_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的开始时间。END_TIMESTAMP
:采用 RFC 3339 UTC“Zulu”格式的时间戳,用于指明时间范围的结束时间。
DATA_STORE_RESOURCE_PATH
:搜索结果包含推广网址的数据存储区的完整资源路径。完整资源路径的格式为projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATA_STORE_ID
。此数据存储区必须附加到请求中指定的引擎。DOCUMENT_RESOURCE_PATH
:用于指定要推广的文档的资源路径的字段。您必须在DOCUMENT_RESOURCE_PATH
字段中提供文档 ID,在URI
字段中提供 URI,或者同时提供这两者。完整资源路径的格式为:
projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID
。TITLE
:一个必需字段,用于指定要宣传的文档或网页的标题。此标题会显示在搜索结果中。URI
:用于指定搜索结果将用户引导至的 URI 的字段。您必须在DOCUMENT_RESOURCE_PATH
字段中提供文档 ID,在URI
字段中提供 URI,或者同时提供这两者。URI_DESCRIPTION
:一个可选字段,用于描述 URI,该 URI 会显示在搜索结果中。
响应包含您需要附加到搜索应用的推广控制 ID。
使用
engines.servingConfigs.patch
方法将控件附加到应用的投放配置。您在以下请求中附加promoteControlIds
的顺序就是返回的推广结果的顺序。curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?update_mask=promote_control_ids" \ -d '{ "promoteControlIds": ["PROMOTE_ID_1", "PROMOTE_ID_2"] }'
将
PROMOTE_ID_N
替换为您在上一步中收到的控制 ID。
后续步骤
- 如需了解投放控制对应用搜索质量的影响,请评估搜索质量。