Использование API Microsoft Поиск для поиска с чередованием результатов
Ресурс Microsoft Поиск searchRequest поддерживает передачу нескольких типов сущностей в одном запросе и возвращает чередующиеся результаты с запрошенными типами сущностей, ранжированных по релевантности.
Поддерживаемые сочетания сущностей
В следующей таблице показана связь между различными типами сущностей, которые можно чередуть. Тип сущности qna поддерживается только в бета-версии.
Тип сущности | acronym | bookmark | message | chatMessage | drive | driveItem | event | externalItem | список | listItem | person | qna | site |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
acronym | Да | Да | - | - | - | - | - | - | - | - | - | Да | - |
bookmark | Да | Да | - | - | - | - | - | - | - | - | - | Да | - |
message | - | - | Да | Да | - | - | - | - | - | - | - | - | - |
chatMessage | - | - | Да | Да | - | - | - | - | - | - | - | - | - |
drive | - | - | - | - | Да | Да | - | Да | Да | Да | - | - | Да |
driveItem | - | - | - | - | Да | Да | - | Да | Да | Да | - | - | Да |
event | - | - | - | - | - | - | Верно | - | - | - | - | - | - |
externalItem | - | - | - | - | Да | Да | - | Да | Да | Да | - | - | Да |
список | - | - | - | - | Да | Да | - | Да | Да | Да | - | - | Да |
listItem | - | - | - | - | Да | Да | - | Да | Да | Да | - | - | Да |
person | - | - | - | - | - | - | - | - | - | - | Верно | - | - |
qna | Да | Да | - | - | - | - | - | - | - | - | - | Да | - |
site | - | - | - | - | Да | Да | - | Да | Да | Да | - | - | Да |
Примеры
Пример 1. Поиск с типами файлов SharePoint и сочетанием всех соединителей
В следующем примере показан запрос, который выполняет поиск с помощью типов файлов SharePoint и всех сочетаний соединителей.
Запрос
Ниже показан пример запроса.
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem",
"site",
"externalItem"
],
"query": {
"queryString": "contoso"
},
"contentSources": [
"/external/connections/*"
],
"from": 0,
"size": 25
}
]
}
Отклик
В следующем примере показан чередующийся ответ.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 4,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 1,
"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"
}
},
{
"hitId": "microsoft.sharepoint.com,9fb3f597-167e-4c3d-b5e6-1ddc18d22d48,c53cd46e-9033-4b42-af94-0ad76ab75fd0",
"rank": 2,
"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"
}
},
{
"hitId": "ad60906b-1317-495c-b566-7b8ce1be5555",
"rank": 4,
"summary": "Test listItem 2",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Test listItem summary 2"
}
}
]
}
]
}
]
}
Пример 2. Поиск с типами файлов SharePoint и определенным сочетанием соединителей
В следующем примере показан запрос, который выполняет поиск с помощью типов файлов SharePoint и определенного сочетания соединителей.
Запрос
Ниже показан пример запроса.
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem",
"site",
"externalItem"
],
"query": {
"queryString": "contoso"
},
"contentSources": [
"/external/connections/MicrosoftPowerBI",
"/external/connections/Learning"
],
"from": 0,
"size": 25
}
]
}
Отклик
В следующем примере показан чередующийся ответ.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 5,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 1,
"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"
}
},
{
"hitId": "microsoft.sharepoint.com,9fb3f597-167e-4c3d-b5e6-1ddc18d22d48,c53cd46e-9033-4b42-af94-0ad76ab75fd0",
"rank": 2,
"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"
}
},
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff=",
"rank": 3,
"summary": "Test externalItem",
"contentSource": "MicrosoftPowerBI",
"resource": {
"@odata.type": "#microsoft.graph.externalConnectors.externalItem",
"title": "Test externalItem summary",
}
},
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff=",
"rank": 4,
"summary": "Learning externalItem",
"contentSource": "Learning",
"resource": {
"@odata.type": "#microsoft.graph.externalConnectors.externalItem",
"title": "Test externalItem summary",
}
},
{
"hitId": "ad60906b-1317-495c-b566-7b8ce1be5555",
"rank": 5,
"summary": "Test listItem 2",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Test listItem summary 2"
}
}
]
}
]
}
]
}
Пример 3. Поиск с сочетанием закладки и аббревиатуры
В следующем примере показан запрос, который выполняет поиск с закладкой и аббревиатурой в качестве типов сущностей.
Запрос
Ниже показан пример запроса.
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"bookmark",
"acronym"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
Отклик
В следующем примере показан чередующийся ответ для закладки и аббревиатуры.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"POC"
],
"hitsContainers": [
{
"total": 2,
"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"
}
}
]
}
]
}
]
}
Пример 4. Чередуйте содержимое Teams и Outlook
В следующем примере показано, как чередовать сообщения чата Teams и содержимое сообщений Outlook.
Запрос
Ниже показан пример запроса.
POST https://graph.microsoft.com/v1.0/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"chatMessage",
"message"
],
"query": {
"queryString": "*"
},
"from": 0,
"size": 5
}
]
}
Отклик
В следующем примере показан чередующийся ответ.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgBGAAAD7MLXbKjTeUeUiM62OAqxBAcA/PUmjl3OgEumTcnPoOXsegAAAgFYAAAA/PUmjl3OgEumTcnPoOXsegABBugTfgAAAA==",
"rank": 1,
"summary": "hi",
"resource": {
"@odata.type": "microsoft.graph.chatMessage",
"id": "1657786709667",
"createdDateTime": "2022-07-14T08:18:30Z",
"lastModifiedDateTime": "2022-07-14T08:19:07Z",
"subject": "",
"importance": "normal",
"webLink": "https://teams.microsoft.com/l/message/19%3a8b00f92f-63ba-4ad7-822e-862219ba93b3_ba9f3156-32ae-4308-bd33-64a92319b578%40unq.gbl.spaces/1657786709667?context=%7B%22contextType%22:%22chat%22%7D",
"from": {
"emailAddress": {
"name": "Tong Zheng",
"address": "Tong.Zheng@microsoft.com"
}
},
"channelIdentity": {
"channelId": "19:8b00f92f-63ba-4ad7-822e-862219ba93b3_ba9f3156-32ae-4308-bd33-64a92319b578@unq.gbl.spaces"
},
"etag": "1657786709667",
"chatId": "19:8b00f92f-63ba-4ad7-822e-862219ba93b3_ba9f3156-32ae-4308-bd33-64a92319b578@unq.gbl.spaces"
}
},
{
"hitId": "AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgBGAAAD7MLXbKjTeUeUiM62OAqxBAcA-PUmjl3OgEumTcnPoOXsegAAAgEBAAAAAPz1Jo5dzoBLpk3Jz6Dl7HoAAAIJWgAAAA==",
"rank": 2,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.message",
"createdDateTime": "2021-06-11T23:17:11Z",
"lastModifiedDateTime": "2021-06-12T02:58:00Z",
"receivedDateTime": "2021-06-11T23:17:11Z",
"sentDateTime": "2021-06-11T23:17:11Z",
"hasAttachments": false,
"internetMessageId": "<DM5PR00MB0406C60478A4456D6B0F83F8D4349@DM5PR00MB0406.namprd00.prod.outlook.com>",
"bodyPreview": "",
"importance": "normal",
"parentFolderId": "AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgAuAAAD7MLXbKjTeUeUiM62OAqxBAEA-PUmjl3OgEumTcnPoOXsegAAAgEBAAAAAA==",
"conversationId": "AAQkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgAQANQdjNmPALIE6YAJmOz4Qn4=",
"isRead": true,
"isDraft": true,
"webLink": "https://outlook.office365.com/owa/?ItemID=AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgBGAAAD7MLXbKjTeUeUiM62OAqxBAcA%2FPUmjl3OgEumTcnPoOXsegAAAgEBAAAAAPz1Jo5dzoBLpk3Jz6Dl7HoAAAIJWgAAAA%3D%3D&exvsurl=1&viewmodel=ReadMessageItem",
"inferenceClassification": "focused"
}
}
],
"total": 2,
"moreResultsAvailable": false
}
]
}
],
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.searchResponse)"
}
Известные ограничения
- Настраиваемая сортировка не поддерживается в сценариях чередование, все элементы упорядочены по релевантности.
- QueryTemplate поддерживается только для элементов файлов в чередующихся запросах. Результаты внешнего элемента не отфильтровываются в ответе. Не рекомендуется использовать queryTemplate в чередующихся запросах.
- Свертывание не поддерживается.
- Изменение средства проверки орфографии не поддерживается. Поддерживаются только предложения средства проверки орфографии.
- Шаблон результата не поддерживается.
- Ограничения агрегирования возникают, если агрегированное поле существует в нескольких типах файлов Sharepoint (сайт, диск, driveItem, list, listItem) и соединителях. В результатах агрегирования отображаются два контейнера агрегирования с одинаковыми именами; Чтобы обойти ограничение, переименуйте один из них.