Использование API Microsoft Поиск для свертывания результатов поиска

Вы можете использовать API Microsoft Поиск в Microsoft Graph для свертывания элементов в результирующем наборе поиска. Это позволяет отображать результаты кратким и читаемым способом. Критерии для сворачивания можно указать с помощью свойства collapseProperties в объекте searchRequest , который содержит один или несколько параметров collapseProperty , чтобы задать поля для свертывания и ограничить размер результатов. Свойство collapseProperties поддерживается для следующих типов сущностей:

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

В следующей таблице перечислены сценарии свертывания, которые можно включить.

Сценарии Описание Пример
Базовое свертывание Свертывание по одному запрашиваемому свойству или свойству с возможностью сортировки или уточнения. Это предельное значение должно быть целым числом от 1 до 32767. "collapseProperties":[{"fields":["filename"],"limit":3}]
Сворачивание составных соединений Свертывание по составным полям свойств. Максимальное количество полей отсутствует, но необходимо указать по крайней мере два поля. Это предельное значение должно быть целым числом от 1 до 32767. "collapseProperties":[{"fields":["filename","author"],"limit":2}]
Многоуровневое свертывание Свертывание по уровневым свертываниемСвойства. Максимальное количество уровней отсутствует, но необходимо указать по крайней мере два уровня. Предельное значение каждого уровня должно быть целым числом от 1 до 32767 и должно быть равно или меньше предельного значения верхнего уровня. "collapseProperties":[{"fields":["filename"],"limit":3},{"fields":["author"],"limit":1}]

Примеры

В следующей таблице показан пример списка в SharePoint. В примерах в этом разделе этот список используется, чтобы показать, как работает свойство collapseProperties .

Filename Автор Subject РАНГ
Примечание. Энди Поэзии 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
                }
            ]
        }
    ]
}

Группирование элементов по имени файла и отображение трех верхних ("ограничение": 3) для каждой группы. Как видно из следующей таблицы, рейтинг сохраняется. Первые три и последние три строки остаются, но строки четыре и пять исключаются, так как предел collapseProperties равен 3.

Filename Автор Subject РАНГ
Примечание. Энди Поэзии 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. Это приводит к сохранению первых четырех строк и исключению пятой строки, так как сочетание Note (Имя файла) и Джеймс (Автор) допускается только 2 раза. Последние три строки остаются по той же причине.

Filename Автор Subject РАНГ
Примечание. Энди Поэзии 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
                }
            ]
        }
    ]
}

В следующей таблице ранжирование сохраняется, но результаты сначала свернуты по имени файла, а затем по автору. При сворачивании первого уровня по имени файла с ограничением в 3 первые три строки остаются, строки четыре и пять удаляются, а последние три строки остаются без изменений. При сворачивании второго уровня с ограничением в 1 первые три строки не изменяются, так как каждая из них имеет уникальное значение Author. Восьмерая строка исключена, так как Джеймс снова указан как Автор, и это свойство должно иметь уникальные значения.

Filename Автор Subject РАНГ
Примечание. Энди Поэзии 1
Примечание. Джеймс Журнал 2
Примечание. Роберт Culture 3
Notebook Джеймс естественные науки; 6
Notebook Энди Culture 7

Отклик

При использовании collapseProperties ответ содержит логическое свойство isCollapsed для каждого результата. Это свойство указывает состояние сворачивания результата.

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 не поддерживается для следующих ресурсов: message, chatMessage, event, person, externalItem, bookmark, акроним или qna.

Дальнейшие действия