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 の) 結果の総数。returntotalrecordcount
が false (既定) に設定されている場合、値 −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 分かかります。 個人データは収集されません (プライバシー ステートメント)。