Utiliser l’API Recherche Microsoft pour effectuer une recherche avec des résultats entrelacés
La ressource searchRequest prend en charge le passage de plusieurs types d’entités dans une seule requête et retourne des résultats entrelacés avec le type d’entité demandé, classé par pertinence.
Combinaison d’entités prise en charge
Le tableau suivant montre la relation entre les différents types d’entités qui peuvent être entrelacés.
Type d’entité | message | chatMessage | Lecteur | driveItem | event | externalItem | liste | listItem | Personne | site |
---|---|---|---|---|---|---|---|---|---|---|
message | Vrai | - | - | - | - | - | - | - | - | - |
chatMessage | - | Vrai | - | - | - | - | - | - | - | - |
Lecteur | - | - | True | True | - | True | True | True | - | True |
driveItem | - | - | True | True | - | True | True | True | - | True |
event | - | - | - | - | Vrai | - | - | - | - | - |
externalItem | - | - | True | True | - | True | True | True | - | True |
liste | - | - | True | True | - | True | True | True | - | True |
listItem | - | - | True | True | - | True | True | True | - | True |
Personne | - | - | - | - | - | - | - | - | Vrai | - |
site | - | - | True | True | - | True | True | True | - | True |
Exemples
Exemple 1 : Rechercher avec des types de fichiers SharePoint et une combinaison de connecteurs
Demande
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
}
]
}
Réponse
Voici un exemple de réponse d’entrelacement.
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": "adce5789-c324-485a-a8bf-66bb809527ff=",
"rank": 3,
"summary": "Test externalItem",
"resource": {
"@odata.type": "#microsoft.graph.externalItem",
"title": "Test externalItem 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"
}
]
}
]
}
]
}
Limitations connues
- Le tri personnalisé n’est pas pris en charge dans le scénario d’entrelacement, tous sont classés par pertinence.
- QueryTemplate est uniquement pris en charge pour les éléments de fichier dans la requête d’entrelacement. Il ne peut pas filtrer les résultats externalItem dans la réponse. Le comportement pourrait être modifié à l’avenir et autoriser queryTemplate à filtrer les résultats externalItem, et non à suggérer d’utiliser queryTemplate dans la demande d’entrelacement.
- La réduction n’est pas prise en charge.
- La modification de l’orthographe n’est pas prise en charge, la suggestion d’orthographe peut être utilisée normalement.
- Le modèle de résultat n’est pas pris en charge.
- Limitation d’agrégation, si le même champ agrégé existe dans les types de fichiers Sharepoint (site, lecteur, driveItem, listItem, listItem) et les connecteurs. Le résultat de l’agrégation affiche deux compartiments d’agrégation identiques portant le même nom. Suggérez de renommer l’un de ses noms pour contourner la limitation.
- La spécification d’une connexion unique dans la source de contenu n’est pas prise en charge. Par conséquent, utilisez uniquement « /external/connections/* » dans contentSource. Notez qu’il existe un plan pour modifier le comportement afin d’autoriser la recherche d’entrelacement de connexion unique à l’avenir.