Использование 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.