次の方法で共有


Dataverse 検索 (レガシ)

重要

このドキュメントは、レガシ Dataverse 検索エンドポイント用です。 ただし、最新バージョンの Dataverse 検索エンドポイントを使用することをお勧めします。 詳細: Dataverse レコードの検索

レガシ Dataverse 検索 (バージョン 1.0) の使用を開始する場合、アプリケーションは HTTP POST リクエストを発行して、Dataverse 検索を開始します。 データを検索するときは、要求本文でオプションのプロパティを指定して、環境データの検索方法の基準を設定します。

レガシ Dataverse 検索には 3 つのエンドポイントがあり、Power Apps make.powerapps.com で使用することができます。

  • 検索: /api/search/v1.0/query 検索結果ページを表示します。

  • 提案: /api/search/v1.0/suggest ユーザーがフォーム フィールドにテキストを入力するときに提案を表示します。

  • オートコンプリート: /api/search/v1.0/autocomplete ユーザーがフォーム フィールドにテキスト入力するときに入力のオートコンプリートを行います。

次のセクションでは、アプリケーション コードから前述の検索機能にアクセスする方法について説明します。

以下の例には、Dataverse 検索 HTTP 要求の最小構文が表示されます。

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "<search term>"
}

search プロパティ値には、検索する用語が含まれ、100 文字の制限があります。

検索が成功すると、次のもので構成される HTTP ステータス 200 が返されます。

  • value: テーブルの一覧。 既定では 50 件の結果が返されます。 このプロパティには、応答の crmhit タグ内に含まれる search プロパティ値との一致を示す検索ハイライトも含まれます。

  • totalrecordcount: (タイプ long の) 結果の総数。 returntotalrecordcountfalse (既定) に設定されている場合、値 −1 が返されます。

  • facets: ファセットの結果。

さらに、1 つ以上のプロパティをペイロードに追加して、提案検索の実行方法と返される結果をカスタマイズできます。 サポートされているプロパティは次のセクションに示されています。

クエリのプロパティ

次のプロパティが クエリ エンドポイントを使用した Dataverse 検索でサポートされています。

entities:[list<string>] (オプション)

既定のテーブル一覧は、Dataverse 検索の–構成されたテーブルと列をすべて検索します。 Dataverse 検索が有効になっている場合、管理者は既定の一覧を構成します。

facets:[list<string>] (オプション)

ファセットは、データ結果が取得された後にデータ結果にドリルダウンする機能をサポートします。

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "maria",

  "facets": ["@search.entityname,count:100",  
    "account.primarycontactid,count:100",  
    "ownerid,count:100",  
    "modifiedon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00",
    "createdon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00"]
}

filter:[string] (オプション)

フィルターはデータの検索中に適用され、標準の OData スタイルの構文で指定されます。

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "maria",

  "filter": "account:modifiedon ge 2020-04-27T00:00:00,
    activities: regardingobjecttypecode eq 'account', annotation:objecttypecode eq 'account',
    incident: (prioritycode eq 1 or prioritycode eq 2)"
}

returntotalrecordcount: true | false (オプション)

合計レコード数を返すには、true を指定します。返さない場合は false を指定します。 既定値は false です。

skip:[int] (オプション)

スキップする検索結果の数を指定します。

top:[int] (オプション)

取得する検索結果の数を指定します。 既定値は 50、最大値は 100 です。

orderby:[list<string>] (オプション)

コンマ区切りの句の一覧で、各句は、列名とそれに続く 'asc' (既定の昇順) または 'desc' (降順) で構成されます。 このリストは、結果を優先順に並べる方法を指定します。 既定では、結果は関連性スコア (@search.score) の降順で一覧表示されます。 スコアが同じ結果の場合、順序はランダムになります。

複数のテーブルの種類を含む結果セットの場合、orderby の句の一覧はグローバルに適用可能である必要があります (たとえば、modifiedon、createdon、@search.score)。 orderby プロパティを指定すると、既定値が上書きされることに注意してください。 たとえば、関連性によって (優先順位の順に) ランク付けされた結果を取得し、次に上位にリストされた最新の変更されたレコードを取得するには、次のようにします。

"orderby": ["@search.score desc", "modifiedon desc"]

クエリ要求に特定のテーブルの種類のフィルターが含まれる場合、orderby はオプションでテーブル固有の列を指定できます。

searchmode:any | all (オプション)

ドキュメントを一致としてカウントするために、検索語の any または all を一致させる必要があるかどうかを指定します。 既定値は any です。

注意

クエリ リクエスト本文の searchMode プロパティは、NOT 演算子を含む用語がクエリ内の他の用語と AND として解釈されるか OR として解釈されるかを制御します (他の用語に + または | 演算子がない場合)。

"searchMode": "any" を使用すると、より多くの結果が含まれるため、クエリの呼び出しが増加し、デフォルトでは "OR NOT" として解釈されます。 たとえば、"wifi -luxury" は、"wifi" という用語が含まれているドキュメント、または "luxury" という用語が含まれていないドキュメントに一致します。

"searchMode": "all" を使用すると、含まれる結果が少なくなるためクエリの精度が向上し、既定では "AND NOT" として解釈されます。 たとえば、"wifi -luxury" は、"wifi" という用語を含み、"luxury" という用語を含まないドキュメントと一致します。

searchtype:simple | full (オプション)

検索タイプは、検索クエリの構文を指定します。 simple を使用すると、単純なクエリ構文が選択され、full を使用すると Lucene クエリ構文が選択されます。 既定値は simple です。

単純なクエリ構文は、次の機能をサポートしています。

機能 説明
ブール演算子 AND 演算子、+ で示されます
OR 演算子、| で示されます
NOT 演算子、- で示されます
優先演算子 "hotel+(wifi | luxury)" という検索用語は、"hotel" という用語と "wifi" または "luxury" (あるいはその両方) のいずれかを含む結果を検索します。
ワイルドカード 末尾のワイルドカードがサポートされています。 たとえば、"Alp*" は "alpine" を検索します。
完全一致 引用符 " " で囲まれたクエリ。

Lucene クエリ構文は、次の機能をサポートしています。

機能 説明
ブール演算子 単純なクエリ構文と比較して、拡張されたセットを提供します。
AND 演算子、AND、 + で示されます
OR 演算子、OR、|| で示されます
NOT 演算子、NOT、!、– で示されます
優先演算子 単純なクエリ構文と同じ機能です。
ワイルドカード 末尾のワイルドカードに加えて、先頭のワイルドカードもサポートします。
末尾のワイルドカード – "alp*"
行間のワイルドカード - "/.*pine/"
あいまい検索 最大 2 文字のスペルミスのあるクエリをサポートします。
"Uniersty~" は "University" を返します
"Blue~1" は "glue"、"blues" を返します
用語ブースト クエリ内の特定の用語の重みが異なります。
"Rock^2 electronic" は、"electronic" との一致よりも "rock" の一致の方が重要な結果を返します。
近接検索 より文脈的な結果を得るために、用語が互いに x 語以内にある結果を返します。
たとえば、“airport hotel”~5 は、"airport" と "hotel" が互いに 5 語以内の結果を返すため、空港の近くにあるホテルを見つける可能性が高くなります。
正規表現 (regex) 検索 たとえば、/[mh]otel/ は "motel" または "hotel" に一致します。

注意

ワイルドカードは、Dataverse 検索で単語を補完する場合にのみ使用されます。 原則として、先頭のワイルドカードを使用したクエリは、ワイルドカードを使用しない場合よりもかなり時間がかかるため、検索対象を見つけるための別の方法を検討し、先頭のワイルドカードを使用する場合は慎重に使用することをお勧めします。

検索テキストの一部として検索演算子のいずれかを使用するには、文字の前に 1 つの円記号 (\) を付けることで文字をエスケープします。 エスケープが必要な特殊文字には、次のものがあります: + - & | ! ( ) { } [ ] ^ " ~ * ? : \ /

以下の例は、基本的な検索リクエストと応答です。

要求:

POST [Organization URI]/api/search/v1.0/query
{  
  "search": "maria",

  "facets": ["@search.entityname,count:100",  
    "account.primarycontactid,count:100",  
    "ownerid,count:100",  
    "modifiedon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00",
    "createdon,values:2019-04-27T00:00:00|2020-03-27T00:00:00|2020-04-20T00:00:00|2020-04-27T00:00:00"]
}

応答:

{
    "value": [
        {
            "@search.score": 0.4547767,
            "@search.highlights": {
                "emailaddress1": [
                    "{crmhit}maria{/crmhit}@contoso.com"
                ],
                "firstname": [
                    "{crmhit}Maria{/crmhit}"
                ],
                "fullname": [
                    "{crmhit}Maria{/crmhit} Sullivan"
                ]
            },
            "@search.entityname": "contact",
            "@search.objectid": "16ffc791-d06d-4d8c-84ad-89a8978e14f3",
            "ownerid": "bb2500d1-5e6d-4953-8389-bfedf57e3857",
            "owneridname": "Corey Gray",
            "@search.ownerid.logicalname": "systemuser",
            "@search.objecttypecode": 2,
            "fullname": "Maria Sullivan",
            "entityimage_url": **null**,
            "createdon": "10/9/2020 5:27 PM",
            "modifiedon": "10/9/2020 5:27 PM",
            "emailaddress1": "maria@contoso.com",
            "address1_city": **"Seattle"**,
            "address1_telephone1": **"206-400-0200"**,
            "parentcustomerid": **null**,
            "parentcustomeridname": **null**,
            "telephone1": **"206-400-0300"**
        }
    ],
    "facets": {
        "account.primarycontactid": [],
        "ownerid": [
            {
                "Type": "Value",
                "Value": "31ca7d4b-701c-4ea9-8714-a89a5172106e",
                "OptionalValue": "Corey Gray",
                "Count": 1
            }
        ],
        "@search.entityname": [
            {
                "Type": "Value",
                "Value": "contact",
                "Count": 1
            }
        ],
        "modifiedon": [
            {
                "Type": "Range",
                "To": "4/27/2019 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2019 12:00 AM",
                "To": "3/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "3/27/2020 12:00 AM",
                "To": "4/20/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/20/2020 12:00 AM",
                "To": "4/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2020 12:00 AM",
                "Count": 1
            }
        ],
        "createdon": [
            {
                "Type": "Range",
                "To": "4/27/2019 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2019 12:00 AM",
                "To": "3/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "3/27/2020 12:00 AM",
                "To": "4/20/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/20/2020 12:00 AM",
                "To": "4/27/2020 12:00 AM",
                "Count": 0
            },
            {
                "Type": "Range",
                "From": "4/27/2020 12:00 AM",
                "Count": 1
            }
        ]
    },
    "totalrecordcount": -1
}

サジェスチョン

候補は、テーブル レコードのプライマリ列に基づいて、指定された検索プロパティ値に一致する一覧を提供します。 提案検索ではレコードのプライマリ列のみが検索され、検索リクエストでは Dataverse 検索–の有効なテーブル列全体を検索するため、通常の検索要求とは異なります。

以下の例には、提案検索 HTTP 要求の最小構文が表示されます。

POST [Organization URI]/api/search/v1.0/suggest
{
  "search": "<text-fragment>"
}

検索プロパティ値は、検索が一致するテキスト文字列を提供し、最小長は 3 文字です。

検索が成功すると、HTTP ステータス 200 が返され、「値」が含まれます。これは、テキストまたはドキュメントで構成されるリストであり、テキストはハイライト付きの提案であり、ドキュメントは提案結果の辞書 <string,object> です。 既定では 5 件の結果が返されます。 提案のハイライトは、検索プロパティ値との一致を示し、応答の crmhit タグ内に含まれています。

さらに、1 つ以上のプロパティを要求の本文に追加して、提案検索の実行方法と返される結果をカスタマイズできます。 サポートされているプロパティは次のセクションに示されています。

提案のプロパティ

usefuzzy:true | false (オプション)

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

top:[int] (オプション)

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

orderby:[List<string>] (オプション)

コンマ区切りの句の一覧で、各句は、列名とそれに続く asc (昇順) または desc (降順) で構成されます。 このリストは、結果を優先順に並べる方法を指定します。 既定では、結果は関連性スコア (@search.score) の降順で一覧表示されます。 スコアが同じ結果の場合、順序はランダムになります。

複数のテーブルの種類を含む結果セットの場合、orderby の句の一覧はグローバルに適用可能である必要があります (たとえば、modifiedon、createdon、@search.score)。 orderby プロパティを指定すると、既定値が上書きされることに注意してください。 たとえば、関連性によって (優先順位の順に) ランク付けされた結果を取得し、次に上位にリストされた最新の変更されたレコードを取得するには、次のようにします。

"orderby": ["@search.score desc", "modifiedon desc"]

クエリ要求に特定のテーブルの種類のフィルターが含まれる場合、orderby はオプションでテーブル固有の列を指定できます。

entities:[list<string>] (オプション)

既定では、Dataverse 検索–の構成済みテーブル全体を検索します。

filter:[string] (オプション)

フィルターはデータの検索中に適用され、標準の OData 構文で指定されます。

要求:

POST [Organization URI]/api/search/v1.0/suggest
{  
  "search": "mar",

  "filter": "account:modifiedon ge 2020-04-27T00:00:00,
    activities:regardingobjecttypecode eq 'account', annotation:objecttypecode eq 'account'"
}

以下の例は、基本的な提案検索リクエストを示します。

要求:

POST [Organization URI]/api/search/v1.0/suggest
{  
  "search": "mar"
}

応答:

{
    "value": [
        {
            "text": "{crmhit}Mar{/crmhit}ia Sullivan",
            "document": {
                "@search.objectid": "52a33850-8f0a-eb11-a813-000d3a8ab142",
                "@search.entityname": "contact",
                "@search.objecttypecode": 2,
                "fullname": "Maria Sullivan",
                "entityimage_url": **null**,
                "emailaddress1": "maria@contoso.com",
                "address1_city": **null**,
                "address1_telephone1": **null**,
                "parentcustomerid": **null**,
                "parentcustomeridname": **null**,
                "telephone1": **null**
            }
        }
    ]
}

Autocomplete

ユーザー入力のオートコンプリートを提供します。 オートコンプリートは、テーブル レコードのプライマリ列に基づいています。

Dataverse 検索 HTTP 要求の最小構文は以下のとおりです。

POST [Organization URI]/api/search/v1.0/autocomplete
{  
  "search": "<text-fragment>"
}

検索が成功すると、HTTP ステータス 200 が返されます。これは文字列である「値」で構成されます。

さらに、1 つ以上のプロパティを要求本文に追加して、提案検索の実行方法と返される結果をカスタマイズできます。 サポートされているプロパティは次のセクションに示されています。

オートコンプリートのプロパティ

usefuzzy: true | false (オプション)

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

entities: [list<string>] (オプション)

既定のスコープは、Dataverse 検索の–構成されたテーブルと列をすべて検索しています。

filter: [string] (オプション)

フィルターはデータの検索中に適用され、標準の OData 構文で指定されます。

要求:

POST [Organization URI]/api/search/v1.0/autocomplete
{  
  "search": "mar",

  "filter": "account:modifiedon ge 2020-04-27T00:00:00,
    activities:regardingobjecttypecode eq 'account', annotation:objecttypecode eq 'account'"
}

以下の例は、基本的なオートコンプリート リクエストを示します。

要求:

POST [Organization URI]/api/search/v1.0/autocomplete
{  
  "search": "mar"
}

応答:

{
  "value": "{crmhit}maria{/crmhit}"
}

参照

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

注意

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

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