Dataverse 検索では、複数のテーブルにまたがる包括的な検索結果が、1 つのリストで関連性の高い順にすばやく表示されます。 また、アプリでの提案とオートコンプリート エクスペリエンスをサポートする機能も提供します。
注意
開発者向けのこのドキュメントでは、Dataverse Search API をプログラムで操作する方法について説明します。
ユーザー エクスペリエンスと、環境に合わせて Dataverse Search を構成する方法については、次のトピックを参照してください。
使用方法
開発者は、次の 3 つの方法で検索 API を使用できます。
- .NET 用 Dataverse SDK
- Web API
/api/data/v9.xエンドポイント - ネイティブ検索
/api/search/v2.0/エンドポイント
検索操作はカスタム API を使用した Dataverse メッセージとして定義されています。 .NET プロジェクトの場合は、SDK for .NET を使用します。
現時点では、SDK にはこれらの操作を使用するクラスは含まれていません。 .NET Framework プロジェクトの場合は、Power Platform CLI pac modelbuilder ビルド を使用して、カスタム アクションの場合と同様に、これらのメッセージの *Request クラスと *Response クラスを生成します。
OrganizationRequest および OrganizationResponse クラスも使用できます。
詳細については、以下を参照してください:
検索の操作
検索には、データの検索を可能にするユーザー インターフェイスをサポートする 3 つの操作が用意されています。
| SDK のメッセージ名 Web API アクション Search 2.0 エンドポイント |
説明 |
|---|---|
searchquery検索クエリのアクション /api/search/v2.0/query |
検索結果ページを返します。 Dataverse の検索クエリを参照する |
searchsuggest検索候補アクション /api/search/v2.0/suggest |
ユーザーがフォーム フィールドにテキストを入力すると、候補が表示されます。 Dataverse の検索の提案を参照する |
searchautocompletesearchautocomplete アクション /api/search/v2.0/autocomplete |
ユーザーがフォーム フィールドにテキストを入力すると、入力のオートコンプリートが提供されます。 Dataverse 検索のオートコンプリートを参照 |
2 つの操作は、検索が有効かどうかと、その構成方法を理解するのに役立ちます。
| SDK のメッセージ名 Web API 関数 Search 2.0 エンドポイント |
説明 |
|---|---|
searchstatisticssearchstatistics 関数 /api/search/v2.0/statistics |
組織のストレージ サイズとドキュメント数を提供します。 Dataverse 検索の統計を参照する |
searchstatussearchstatus 関数 /api/search/v2.0/status |
組織の検索状況。 Dataverse の検索の状態を参照する |
Insomnia を Dataverse 検索で使用する
Dataverse Web API で不眠症を使用する場合は、API の使用を試してみるのがどれほど便利かがわかります。 Dataverse Web API を使用して認証を行う不眠症環境を設定する手順については、「Dataverse Web API で不眠症を使用する」を参照してください。
Web API 関数とアクションを使用する検索操作でも、同じ手順を使用できます。 ネイティブ検索 2.0 エンドポイント を使用する場合は、次の 2 つの環境変数を変更します。
| 変数 | 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 検索ステータス操作を使用して検出できます。
組織テーブルのチェック
組織テーブルには、組織の構成方法を制御する 1 行のデータが含まれています。 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"];
}
検索で使用するテーブルと列を有効化する
Dataverse のデータは、検索を有効にするテーブルと列を制御します。
テーブルを有効にする
Dataverse 検索で有効にできるのは、 EntityMetadata.CanEnableSyncToExternalSearchIndex.Value プロパティ と EntityMetadata.ChangeTrackingEnabled プロパティ が true のテーブルのみです。
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 Service Protection API の一般的な制限に達することはありません。 これらの制限は、同じ方法で管理します。
Dataverse 検索では、ユーザーは 1 秒あたり 1 つのリクエストを送信できますが、各組織のリクエストは 1 分あたり 150 件に制限されています。 この制限を超えると、API から 429 要求が多すぎます というエラーが返されます。 API から 429 エラーが返された場合は、 Retry-After 応答ヘッダー値で定義された期間が経過するまで待ってから、さらに多くの要求を送信します。 値は待機する秒数を表します。
参照
Dataverse の検索クエリ
Dataverse の検索の提案
Dataverse 検索のオートコンプリート
Dataverse の統計と状態を検索する
Dataverse のレガシ検索
ご使用の環境で Dataverse 検索を構成する