Microsoft Graph Search API を使用して複数の検索要求を渡す
Microsoft Search API を使用すると、1 つの要求本文に複数の検索要求を含めることができます。 この機能は現在、OneDrive と SharePoint だけでなく、 Microsoft Graph コネクタ によって取り込まれたりインデックスが作成されたり、ブックマーク、頭字語、Q&A などの応答リソースの種類で使用できる外部コンテンツにも使用できます。
サポートされているエンティティ型
要求本文に複数の検索要求を含める場合にサポートされるエンティティの種類は、サイト、ドライブ、driveItem、list、listItem、externalItem、bookmark、acronym、qna です。 同じ要求ブロック内のエンティティ型は、サポートされているエンティティ型のリレーションシップと 、インターリーブ検索 トピックで定義されている組み合わせに従う必要があります。
例
例 1: SharePoint ファイルの種類とブックマークと頭字語の組み合わせを使用して検索する
要求
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"bookmark", "acronym"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
},
{
"entityTypes": [
"listItem",
"site"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
応答
SharePoint ファイルの種類とブックマークと頭字語の組み合わせを使用して検索する応答を次に示します。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#search",
"value": [
{
"searchTerms": [
"POC"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.search.acronym",
"id": "adce5789-c324-485a-a8bf-66bb809527ff",
"displayName": "POC",
"description": "Acronym in Spanish",
"webUrl": "",
"standsFor": "prueba de concepto"
}
},
{
"hitId": "1c0599db-2e89-4327-827a-3935c999f6cc",
"rank": 2,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.search.bookmark",
"id": "1c0599db-2e89-4327-827a-3935c999f6cc",
"displayName": "POC",
"description": "A proof of concept (POC) is an exercise in which work is focused on determining whether an idea can be turned into a reality. ",
"webUrl": "https://en.wikipedia.org/wiki/POC"
}
}
]
}
]
},
{
"searchTerms": [
"POC"
],
"hitsContainers": [
{
"total": 2,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 3,
"summary": "Test listItem 1",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Here is a summary of your messages from last week - New Feature: Live captions in English-US a POC"
}
},
{
"hitId": "microsoft.sharepoint.com,9fb3f597-167e-4c3d-b5e6-1ddc18d22d48,c53cd46e-9033-4b42-af94-0ad76ab75fd0",
"rank": 4,
"summary": "Test site",
"resource": {
"@odata.type": "#microsoft.graph.site",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Test site summary POC"
}
}
]
}
]
}
]
}
不適切な要求の例
次の例では、要求エラー応答が不適切になる要求を示します。 検索要求に関する制限事項の詳細については、「既知の制限事項(#known 制限事項)」を参照してください。
例 1: 要求本文の個別の要求ブロックで同じエンティティ型を使用して検索する
要求
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"bookmark"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
},
{
"entityTypes": [
"bookmark",
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
応答
不適切な要求応答の例を次に示します。
HTTP/1.1 200 OK
Content-type: application/json
{
"error": {
"code": "BadRequest",
"message": "SearchRequest Invalid (Entity types must not be duplicates in multiple entity requests)",
"target": "",
"details": [
{
"code": "Microsoft.SubstrateSearch.Api.ErrorReporting.ResourceBasedExceptions.BadRequestException",
"message": "Entity types must not be duplicates in multiple entity requests",
"target": "",
"httpCode": 400
}
],
"httpCode": 400
}
}
例 2: 要求本文の個別の要求ブロック内のファイル エンティティの種類を使用して検索する
要求
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"site"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
},
{
"entityTypes": [
"drive",
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
応答
不適切な要求応答の例を次に示します。
HTTP/1.1 200 OK
Content-type: application/json
{
"error": {
"code": "BadRequest",
"message": "SearchRequest Invalid (Entity types must not be duplicates in multiple entity requests)",
"target": "",
"details": [
{
"code": "Microsoft.SubstrateSearch.Api.ErrorReporting.ResourceBasedExceptions.BadRequestException",
"message": "File entity types can only appear in one entity request",
"target": "",
"httpCode": 400
}
],
"httpCode": 400
}
}
既知の制限
- 要求本文の異なる searchRequest インスタンスの from プロパティと size プロパティに使用される値は同じである必要があります。 異なる searchRequest インスタンス内の異なる searchQuery インスタンスの queryString プロパティに使用される値は同じである必要があります。
- 要求本文内の異なる検索要求間で重複するエンティティ型は許可されません。 たとえば、要求本文に ブックマーク検索Request と別の ブックマーク検索Request を含めることはできません。
- ファイル エンティティの種類 (サイト、 ドライブ、 driveItem、 list、 listItem) は、要求本文と同じ検索要求にのみ存在できます。 たとえば、1 つの searchRequest にサイト エンティティを含め、要求本文の別の searchRequest にドライブ エンティティを含めることはできません。
- スペル チェック機能は 1 回のみ使用でき、要求本文の最初の searchRequest に含める必要があります。