Dataverse 検索のオートコンプリート

オートコンプリート API を使用すると、消費者は検索クエリ語句の一部を Dataverse 検索にを送信して、ユーザーの潜在的な意図になる検索語句を取得することができます。

この API を使用して、より豊かな検索ボックスのエクスペリエンスをサポートできます。 ユーザーが検索語句の各文字を入力すると、オートコンプリートを呼び出して検索ボックスのクエリにオートコンプリートの結果が入力され、先行入力による単語補完が提供されます。 たとえば、set と入力すると、settings とオートコンプリートされます。

「設定」という単語によるオートコンプリートを示す例

検索語句に加えて、返される結果は、次のパラメーターに渡される値によって影響を受ける可能性があります。

件名 タイプ Description 詳細情報
search string 必須。 検索語句 search パラメーター
entities string 既定のスコープは、検索が構成されたすべてのエンティティとフィールドの検索です。 entities パラメーター
filter string 返される結果を減らすためのフィルター条件。 filter パラメーター
fuzzy ブール値 あいまい検索はスペルミスを防ぐのに役立ちます。 既定値は false です。 fuzzy パラメーター

Parameters

このセクションには、上の表のパラメーターに関する詳細が含まれています。

search パラメーター

種類: 文字列
オプション: False

検索語句は、少なくとも 1 文字の長さがある必要があり、100 文字の制限があります。

entities パラメーター

種類: 文字列
オプション: True

既定のスコープは、検索が構成されたすべてのエンティティとフィールドの検索です。 このパラメーターは、クエリ API で使用されるのと同じ クエリの SearchEntity タイプ を使用します。

filter パラメーター

種類: 文字列
オプション: True

返される結果を減らすためのフィルター条件。 このパラメーターは、クエリの filter パラメーター と同じ文字列値を使用します。

fuzzy パラメーター

種類: ブール値
オプション: True

あいまい検索はスペルミスを防ぐのに役立ちます。 既定値は false です。

True に設定すると、この API は、検索テキストに代用または欠落した文字がある場合でも提案を検索します。 編集距離はクエリ文字列ごとに 1 です。 クエリ文字列が複数の語句である場合、欠落した文字、余分な文字、代用文字、または置き換え文字は文字列全体で 1 つだけです。 あいまい一致を有効にすると、一部のシナリオではエクスペリエンスが向上しますが、あいまい提案の検索が遅くなり、より多くのリソースを消費するため、パフォーマンスが犠牲になります。

回答

提案操作からの応答は、JSON データを含むエスケープ文字列です。

エスケープされていない応答には、次のプロパティを使用する JSON が含まれています。

件名 タイプ Description
Error ErrorDetail Azure Cognitive Search からのエラー情報を提供します。
Value string テキスト。
QueryContext QueryContext このプロパティはバックエンド検索に使用されます。 これは今後の機能リリースに含まれ、現在は使用されていません。

応答のタイプ

応答は次のタイプを返します。

ErrorDetail

このタイプは、クエリ API によって返される ErrorDetail と同じです。

QueryContext

このタイプは、クエリ API によって返される QueryContext と同じです。

使用例

次の例は、オートコンプリート操作の使用方法を示しています。 これらの例は、取引先企業テーブルの name フィールドのオートコンプリート結果を返します。

これは、GitHub の SDK for .NET 検索操作のサンプルからの例です。 OutputAutoComplete 静的メソッドは、search パラメーターの値を受け入れます。

/// <summary>
/// Demonstrate autocomplete API
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance to use.</param>
/// <param name="searchTerm">The term to use</param>
/// <returns></returns>
static void OutputAutoComplete(IOrganizationService service, string searchTerm)
{
    Console.WriteLine("OutputAutoComplete START\n");

    searchautocompleteRequest request = new()
    {
        search = searchTerm,
        filter = null,
        fuzzy = true,
        entities = JsonConvert.SerializeObject(new List<SearchEntity>()
            {
                new SearchEntity()
                {
                    Name = "account",
                    SelectColumns = new List<string>() { "name", "createdon" },
                    SearchColumns = new List<string>() { "name" },
                }
            }
        )
    };

    var searchautocompleteResponse = (searchautocompleteResponse)service.Execute(request);

    SearchAutoCompleteResults results = JsonConvert.DeserializeObject<SearchAutoCompleteResults>(searchautocompleteResponse.response);

    Console.WriteLine($"\tSearch: {request.search}");
    Console.WriteLine($"\tValue: {results.Value}");

    Console.WriteLine("\nOutputAutoComplete END\n");
}

出力

searchTerm を「Con」に設定して ServiceClient クラスの認証されたインスタンスで OutputAutoComplete メソッドを呼び出す場合。

OutputAutoComplete(service: serviceClient, searchTerm: "Con");

出力は次のようになります。

OutputAutoComplete START

        Search: Con
        Value: {crmhit}contoso{/crmhit}

OutputAutoComplete END

サポートするクラス

OutputAutoComplete メソッドは、次のサポートするクラスに基づいて要求を送信し、結果を処理します。

searchautocompleteRequest と searchautocompleteResponse クラス

これらのクラスは、.NET 用 SDK の事前バインド クラスを生成するで説明されているように、Power Platform CLI pac modelbuilder build コマンドを使用して生成されます。

SearchEntity クラス

このクラスは、クエリの例 で使用されたのと同じ SearchEntity クラスです。 この場合、searchautocompleteRequest.entities プロパティを設定することができます。

SearchAutoCompleteResults クラス

searchautocompleteResponse.response 文字列プロパティから JSON データを逆シリアル化するために使用します。

class SearchAutoCompleteResults
{
   /// <summary>
   /// The Azure Cognitive error detail returned as part of response.
   /// </summary>
   public ErrorDetail? Error {  get; set; }

   /// <summary>
   /// The text
   /// </summary>
   public string? Value { get; set; }

   /// <summary>
   /// This request is used for backend search, this is included for future feature releases, it is not currently used.
   /// </summary>
   public QueryContext? QueryContext { get; set; }
}
ErrorDetail クラス

このクラスは、クエリの例 で使用されたのと同じ ErrorDetail クラスです。

QueryContext クラス

このクラスは、クエリの例 で使用されたのと同じ QueryContext クラスです。

参照

Dataverse のレコードを検索する
Dataverse の検索クエリ
Dataverse の検索の提案
Dataverse の統計と状態を検索する
Dataverse のレガシ検索

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。