Microsoft Search API を使用して検索結果を折りたたむ

Microsoft Graph の Microsoft Search API を使用して、検索結果セット内の項目を折りたたむことができます。 これにより、簡潔で読みやすい方法で結果を表示できます。 折りたたむフィールドを設定し、結果のサイズを制限する 1 つ以上の collapseProperty パラメーターを含む searchRequest オブジェクトの collapseProperties プロパティを使用して、折りたたみの条件を指定できます。 collapseProperties プロパティは、次のエンティティ型でサポートされています。

  • site
  • drive
  • driveItem
  • list
  • listItem
  • externalItem

次の表に、有効にできる折りたたみシナリオの一覧を示します。

シナリオ 説明
基本的な折りたたみ クエリ可能な 1 つのプロパティと並べ替え可能なプロパティまたは絞り込み可能なプロパティで折りたたみます。 この制限値は、1 から 32767 までの整数である必要があります。 "collapseProperties":[{"fields":["filename"],"limit":3}]
複合折りたたみ プロパティの複合フィールドで折りたたみます。 フィールドの最大数はありませんが、少なくとも 2 つのフィールドを指定する必要があります。 この制限値は、1 から 32767 までの整数である必要があります。 "collapseProperties":[{"fields":["filename","author"],"limit":2}]
複数レベルの折りたたみ レベルごとに折りたた む collapseProperty。 レベルの最大数はありませんが、少なくとも 2 つのレベルを指定する必要があります。 各レベルの制限値は 1 から 32767 までの整数で、上限の制限値以下である必要があります。 "collapseProperties":[{"fields":["filename"],"limit":3},{"fields":["author"],"limit":1}]

次の表は、SharePoint のサンプル リストを示しています。 このセクションの例では、この一覧を使用して collapseProperties プロパティの動作を示します。

Filename 設定元 件名 Rank
注: アンディ 1
注: ジェームズ 履歴 2
注: ロバート Culture 3
注: ジェームズ 数学 4
注: ジェームズ 科学 5
Notebook ジェームズ 科学 6
Notebook アンディ Culture 7
Notebook ジェームズ 科学 8

例 1: 基本的な折りたたみ

要求

POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json

{
    "requests": [
        {
            "entityTypes": [
                "listItem"
            ],
            "query": {
                "queryString": "note"
            },
            "fields": [
                "filename"
            ],
            "collapseProperties": [
                {
                    "fields": [
                        "filename"
                    ],
                    "limit": 3
                }
            ]
        }
    ]
}

Filename に基づいて項目をグループ化し、各グループの上位 3 つの ("制限": 3) を表示します。 次の表に示すように、ランク付けは維持されます。 上位 3 行と最後の 3 行は残りますが、 collapseProperties の制限は 3 であるため、行 4 と行 5 は除外されます。

Filename 設定元 件名 Rank
注: アンディ 1
注: ジェームズ 履歴 2
注: ロバート Culture 3
Notebook ジェームズ 科学 6
Notebook アンディ Culture 7
Notebook ジェームズ 科学 8

例 2: 複合折りたたみ

要求

POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json

{
    "requests": [
        {
            "entityTypes": [
                "listItem"
            ],
            "query": {
                "queryString": "note"
            },
            "fields": [
                "filename",
                "author"
            ],
            "collapseProperties": [
                {
                    "fields": [
                        "filename",
                        "author"
                    ],
                    "limit": 2
                }
            ]
        }
    ]
}

次の表では、ランク付けは維持されますが、Filename と Author の一意の組み合わせを見つけるために、結果は 2 つのプロパティによって同時に折りたたまれます。 これにより、Note (Filename) と James (Author) の組み合わせは最大 2 回しか許可されないため、最初の 4 行が保持され、行 5 は除外されます。 最後の 3 行は同じ理由で残ります。

Filename 設定元 件名 Rank
注: アンディ 1
注: ジェームズ 履歴 2
注: ロバート Culture 3
注: ジェームズ 数学 4
Notebook ジェームズ 科学 6
Notebook アンディ Culture 7
Notebook ジェームズ 科学 8

例 3: 複数レベルの折りたたみ

要求

POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json

{
    "requests": [
        {
            "entityTypes": [
                "listItem"
            ],
            "query": {
                "queryString": "note"
            },
            "fields": [
                "filename",
                "author"
            ],
            "collapseProperties": [
                {
                    "fields": [
                        "filename"
                    ],
                    "limit": 3
                },
                {
                    "fields": [
                        "author"
                    ],
                    "limit": 1
                }
            ]
        }
    ]
}

次の表では、ランク付けは維持されますが、結果は最初に Filename で、次に Author で折りたたまれます。 Filename の最初のレベルの折りたたみの場合、上限は 3 で、最初の 3 行は残り、4 行と 5 行は削除され、最後の 3 行はそのまま残ります。 制限が 1 の 2 番目のレベルの折りたたみの場合、最初の 3 行は変更されません。各行には一意の Author 値があるためです。 James が Author として再び一覧表示され、そのプロパティに一意の値が必要であるため、行 8 は除外されます。

Filename 設定元 件名 Rank
注: アンディ 1
注: ジェームズ 履歴 2
注: ロバート Culture 3
Notebook ジェームズ 科学 6
Notebook アンディ Culture 7

応答

collapseProperties を使用すると、各結果の isCollapsed Boolean プロパティが応答に含まれます。 このプロパティは、結果の折りたたみ状態を示します。

HTTP/1.1 200 OK
Content-type: application/json

{
    "value": [
        {
            "searchTerms": [
                "note"
            ],
            "hitsContainers": [
                {
                    "hits": [
                        {
                            "hitId": "94149344-55e4-4678-b22a-b37a9ed1ffff",
                            "rank": 1,
                            "isCollapsed": true,
                            "summary": "",
                            "resource": {
                                "@odata.type": "#microsoft.graph.listItem",
                                "sharepointIds": {
                                    "listId": "9b786f01-4668-4862-8bbf-443159c0ffff",
                                    "listItemId": "3"
                                },
                                "id": "94149344-55e4-4678-b22a-b37a9ed1ffff",
                                "createdDateTime": "2012-10-10T12:07:57Z",
                                "lastModifiedDateTime": "2022-11-30T08:38:47Z",
                                "parentReference": {
                                    "id": "01PPFMTLYPOGQADPQCOJAJTXZLKETTQP6F",
                                    "siteId": "microsoftapc-my.sharepoint.com,5b8af7a0-0c23-4719-ab6c-457c2104ea8a,2e4df0d0-c83a-473b-bed1-2d2046966d31"
                                },
                                "webUrl": "https://microsoftapc-my.sharepoint.com/Documents/Notes"
                            }
                        }
                    ],
                    "total": 4281349,
                    "moreResultsAvailable": true
                }
            ]
        }
    ],
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.searchResponse)"
}

既知の制限

collapseProperties プロパティは、messagechatMessageイベントpersonexternalItembookmarkacronymqna の各リソースではサポートされていません。

次の手順