Dataverse 搜索跨多个表提供快速且全面的搜索结果,在单个列表中按相关性排序。 它还提供功能来支持应用中的建议和自动完成体验。
注释
本文档面向开发人员介绍如何以编程方式与 Dataverse 搜索 API 交互。
有关用户体验以及如何为环境配置 Dataverse 搜索的信息,请参阅以下主题:
如何使用
开发人员可以通过三种不同的方式使用搜索 API:
- 用于 .NET 的 Dataverse SDK
- Web API
/api/data/v9.x端点 - 原生搜索
/api/search/v2.0/端点
搜索操作被定义为使用 自定义 API 的 Dataverse 消息。 对于 .NET 项目,请使用适用于 .NET 的 SDK。
目前,SDK 不包括使用这些操作的类。 对于 .NET Framework 项目,像处理任何自定义操作一样,使用 Power Platform CLI pac 模型生成器构建命令来生成这些消息的*Request和*Response类。
还可以使用 OrganizationRequest 和 OrganizationResponse 类。
有关详细信息,请参见:
搜索操作
搜索提供三项操作来支持支持用于搜索数据的用户界面。
| SDK 消息名称 Web API 操作 Search 2.0 端点 |
说明 |
|---|---|
searchquerysearchquery 操作 /api/search/v2.0/query |
返回搜索结果页。 请参阅 Dataverse 搜索查询 |
searchsuggest搜索建议操作 /api/search/v2.0/suggest |
当用户在窗体字段中输入文本时提供建议。 请参阅 Dataverse 搜索建议 |
searchautocompletesearchautocomplete 操作 /api/search/v2.0/autocomplete |
用户在表单字段中输入文本时,提供自动完成功能。 请参阅 Dataverse 搜索自动完成 |
两个操作可帮助你了解搜索是否已启用以及搜索的配置方式。
| SDK 消息名称 Web API 函数 Search 2.0 端点 |
说明 |
|---|---|
searchstatisticssearchstatistics 函数 /api/search/v2.0/statistics |
提供组织存储大小和文档数量。 请参阅 Dataverse 搜索统计信息 |
searchstatussearchstatus 函数 /api/search/v2.0/status |
组织的搜索状态。 请参阅 Dataverse 搜索状态 |
将失眠与 Dataverse 搜索配合使用
如果将 Insomnia 与 Dataverse Web API 配合使用,则了解尝试使用 API 是多么有用。 有关设置Insomnia环境以与Dataverse Web API 进行身份验证的说明,请参阅 将 Insomnia 与 Dataverse Web API 一起使用。
对于使用 Web API 函数和操作的搜索操作,您可以遵循相同的说明。 如果要使用本机搜索 2.0 终结点,请更改以下两个环境变量:
| Variable | Web API 值 | Search 2.0 端点值 |
|---|---|---|
version |
9.2 |
2.0 |
webapiurl |
{{url}}/api/data/v{{version}}/ |
{{url}}/api/search/v{{version}}/ |
检测是否启用了搜索
默认情况下,Dataverse 搜索为生产环境启用,但它是一项选择退出功能,因此即使在生产环境中也可以将其关闭。 如果使用生产环境以外的环境,管理员必须启用它。 了解如何在管理中心启用搜索。
未启用搜索时出错
如果未启用环境时使用查询、建议或自动完成操作,则会收到以下错误:
ErrorCode:
-2147185397消息:Dataverse Search feature is disabled for this organization.
可以通过检查组织表中的设置或使用 Dataverse 搜索状态 操作来检测搜索服务是否已启用。
检查组织表
“组织”表包含一行数据,用于控制组织的配置方式。 布尔列 IsExternalSearchIndexEnabled 指示该组织是否启用了搜索功能。
此函数返回 IsExternalSearchIndexEnabled 组织的属性值。
static bool IsExternalSearchIndexEnabled(IOrganizationService service) {
QueryExpression query = new QueryExpression("organization") {
ColumnSet = new ColumnSet("isexternalsearchindexenabled")
};
EntityCollection organizations = service.RetrieveMultiple(query);
return (bool)organizations.Entities.FirstOrDefault()["isexternalsearchindexenabled"];
}
详细信息: 使用 QueryExpression 生成查询
启用表和列进行搜索
Dataverse 中的数据控制哪些表和列启用了搜索功能。
启用表
只有在 EntityMetadata.CanEnableSyncToExternalSearchIndex.Value 属性 和 EntityMetadata.ChangeTrackingEnabled 属性 都为 true 的情况下,才可以为 Dataverse 搜索启用这些表。
CanEnableSyncToExternalSearchIndex.CanBeChanged如果值为 false,则无法更改该值。 有关详细信息,请参阅 托管属性。
若要为 Dataverse 搜索启用表,请将 EntityMetadata.SyncToExternalSearchIndex 属性 设置为 true。
使用具有表逻辑名称的 SDK 或 Web API 检查表的值。 在以下查询中,用您要检查的表的逻辑名称替换account。
static void RetrieveSearchSettingsForTable(IOrganizationService service, string logicalName = "account") {
RetrieveMetadataChangesRequest request = new RetrieveMetadataChangesRequest() {
Query = new EntityQueryExpression() {
Properties = new MetadataPropertiesExpression(
"CanEnableSyncToExternalSearchIndex",
"SyncToExternalSearchIndex")
}
};
request.Query.Criteria.Conditions.Add(
new MetadataConditionExpression(
propertyName: "LogicalName",
conditionOperator: MetadataConditionOperator.Equals,
value: logicalName));
var response = (RetrieveMetadataChangesResponse)service.Execute(request);
EntityMetadata table = response.EntityMetadata.FirstOrDefault();
Console.WriteLine($"CanEnableSyncToExternalSearchIndex: {table.CanEnableSyncToExternalSearchIndex.Value}");
Console.WriteLine($"SyncToExternalSearchIndex: {table.SyncToExternalSearchIndex}");
}
输出
CanEnableSyncToExternalSearchIndex: True
SyncToExternalSearchIndex: True
有关详细信息,请参见:
有关详细信息,请参见:
启用列
可搜索表的列取决于它们是否包含在每个表的“快速查找”视图中。 可以在 视图(SavedQuery)表中 查询视图的定义,并通过编程方式更新视图。
有关详细信息,请参见:
服务保护限制
Dataverse 搜索强制实施较低限制,因此你不会达到常见的 Dataverse 服务保护 API 限制。 以相同的方式管理这些限制。
Dataverse 搜索允许用户每秒发送一个请求,每个组织限制为每分钟 150 个请求。 如果超出此限制,API 将返回 429 请求过多 错误。 如果 API 返回错误 429 ,请等待响应标头值中 Retry-After 定义的时间段,然后再发送更多请求。 该值表示等待的秒数。
另见
Dataverse 搜索查询
Dataverse 搜索建议
Dataverse 搜索自动完成
Dataverse 搜索统计信息和状态
Dataverse 旧版搜索
为您的环境配置 Dataverse 搜索