Dataverse 検索の提案

この API を使用して、より豊かな検索ボックスのエクスペリエンスをサポートできます。 たとえば、ユーザーが検索語句の各文字を入力すると、この API が呼び出され、検索フィールドのドロップダウン リストに提案されたクエリ結果が入力されます。

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

件名 タイプ Description 詳細情報
search string 必須。 検索するための語句。 検索パラメーター
entities string 既定では、検索の構成済みエンティティ全体を検索します。 entities パラメーター
filter string 返される結果を減らすためのフィルター条件。 filter パラメーター
fuzzy ブール値 あいまい検索を使用して、スペルミスを防ぎます。 既定値は false です。 fuzzy パラメーター
options string オプションは、検索語句 を検索するように構成された設定です。 たとえば、"{ 'advancedsuggestenabled': 'true' }" options パラメーター
orderby string 各句が属性名とそれに続く asc または desc で構成されるカンマ区切りの句のリスト。 orderby パラメーター
top int 取得する提案の数。 既定値は 5 です。 top パラメーター

Parameters

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

search パラメーター

種類: 文字列
オプション: 無効

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

entities パラメーター

種類: 文字列
オプション: 有効

既定では、検索の構成済みエンティティ全体を検索します。 このプロパティを使用して結果を絞り込みます。

filter パラメーター

種類: 文字列
オプション: 有効

フィルター条件に一致するレコードに基づいて返される結果を減らすためのフィルター条件。

fuzzy パラメーター

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

あいまい検索を使用して、スペルミスを防ぎます。 既定値は false です。

options パラメーター

種類: 文字列
オプション: 有効

オプションは、検索語句 を検索するように構成された設定です。 提案クエリの有効なオプションは次のとおりです。

"{ 'advancedsuggestenabled': 'true' }"

orderby パラメーター

種類: 文字列
オプション: 有効

各句が属性名とそれに続く asc または desc で構成されるカンマ区切りの句のリスト。

top パラメーター

タイプ: 整数
オプション: 有効

取得する提案の数。 既定値は 5 です。

回答

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

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

件名 タイプ Description
Error ErrorDetail Azure Cognitive Search からのエラー情報を提供します。
Value SuggestResult[] 一致するレコードのコレクション。
QueryContext QueryContext 応答の一部として返されるクエリ コンテキスト。 このプロパティはバックエンド検索に使用されます。 これは今後の機能リリースに含まれ、現在は使用されていません。

応答のタイプ

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

ErrorDetail

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

SuggestResult

提案されたテキストを提供します。

件名 タイプ Description
Text string 提案されたテキストを提供します。
Document Dictionary<string, object> ドキュメント

QueryContext

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

使用例

次の例は、提案操作の使用方法を示しています。 これらの各例では、値「Cont」を検索パラメーターとして渡し、上位 3 つの候補を要求します。

これは、GitHub の SDK for .NET 検索操作のサンプルからの例です。 OutputSearchSuggest 静的メソッドは、検索語句 の上位 3 つの候補を返します。

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

    searchsuggestRequest request = new()
    {
        search = searchTerm,
        top = 3
    };

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

    SearchSuggestResults results = JsonConvert.DeserializeObject<SearchSuggestResults>(searchsuggestResponse.response);

    results.Value?.ForEach(suggestion =>
    {
        Console.WriteLine($"\tText:{suggestion.Text}");
        Console.WriteLine("\tDocument: ");
        foreach (string key in suggestion.Document.Keys)
        {
            Console.WriteLine($"\t\t{key}: {suggestion.Document[key]}");
        }
        Console.WriteLine();
    });

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

出力

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

OutputSearchSuggest(service: serviceClient, searchTerm: "Cont");

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

OutputSearchSuggest START

        Text:{crmhit}cont{/crmhit}act
        Document:
                @search.objectid: 9335eda1-ef69-ee11-9ae7-000d3a88a4a2
                @search.entityname: contact
                @search.objecttypecode: 2
                fullname: Yvonne McKay (sample)

        Text:{crmhit}cont{/crmhit}act
        Document:
                @search.objectid: 9535eda1-ef69-ee11-9ae7-000d3a88a4a2
                @search.entityname: contact
                @search.objecttypecode: 2
                fullname: Susanna Stubberod (sample)

        Text:{crmhit}cont{/crmhit}act
        Document:
                @search.objectid: 9735eda1-ef69-ee11-9ae7-000d3a88a4a2
                @search.entityname: contact
                @search.objecttypecode: 2
                fullname: Nancy Anderson (sample)

OutputSearchSuggest END

サポートするクラス

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

searchsuggestRequest クラスと searchsuggestResponse クラス

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

ErrorDetail クラス

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

SuggestResults クラス

searchsuggestResponse.response プロパティからデータを逆シリアル化するために使用される

class SearchSuggestResults
{
   /// <summary>
   /// Provides error information from Azure Cognitive search.
   /// </summary>
   [JsonProperty(PropertyName = "Error")]
   public ErrorDetail? Error { get; set; }

   /// <summary>
   /// A collection of matching records.
   /// </summary>
   public List<SuggestResult>? Value { get; set; }

   /// <summary>
   /// The query context returned as part of response. This property is used for backend search, this is included for future feature releases, it is not currently used.
   /// </summary>
   public QueryContext? QueryContext { get; set; }
}
SuggestResult クラス

提案結果の結果オブジェクト。

public sealed class SuggestResult
{
   /// <summary>
   /// Gets or sets the text.
   /// </summary>
   [JsonProperty(PropertyName = "text")]
   public string Text { get; set; }

   /// <summary>
   /// Gets or sets document.
   /// </summary>
   [JsonProperty(PropertyName = "document")]
   public Dictionary<string, object> Document { get; set; }
}
QueryContext クラス

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

参照

Dataverse のレコードを検索する
Dataverse の検索クエリ
Dataverse の検索のオートコンプリート
Dataverse の統計と状態を検索する
Dataverse のレガシ検索

注意

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

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