次の方法で共有


Dataverse レコードの検索

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 の検索の提案を参照する
searchautocomplete
searchautocomplete アクション
/api/search/v2.0/autocomplete
ユーザーがフォーム フィールドにテキストを入力すると、入力のオートコンプリートが提供されます。
Dataverse 検索のオートコンプリートを参照

2 つの操作は、検索が有効かどうかと、その構成方法を理解するのに役立ちます。

SDK のメッセージ名
Web API 関数
Search 2.0 エンドポイント
説明
searchstatistics
searchstatistics 関数
/api/search/v2.0/statistics
組織のストレージ サイズとドキュメント数を提供します。
Dataverse 検索の統計を参照する
searchstatus
searchstatus 関数
/api/search/v2.0/status
組織の検索状況。
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"];
}

詳細情報: QueryExpression を使用してクエリを構築する

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 検索を構成する