Utiliser l’API Microsoft Recherche pour réduire les résultats de la recherche

Vous pouvez utiliser l’API Microsoft Recherche dans Microsoft Graph pour réduire les éléments d’un jeu de résultats de recherche. Cela vous permet d’afficher les résultats de manière concise et lisible. Vous pouvez spécifier les critères de réduction à l’aide de la propriété collapseProperties dans un objet searchRequest , qui contient un ou plusieurs paramètres collapseProperty pour définir les champs à réduire et limiter la taille des résultats. La propriété collapseProperties est prise en charge pour les types d’entités suivants :

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

Le tableau suivant répertorie les scénarios de réduction que vous pouvez activer.

Scénarios Description Exemple
Réduction de base Réduire par n’importe quelle seule propriété interrogeable et triable ou refinable. Cette valeur limite doit être un entier compris entre 1 et 32767. "collapseProperties":[{"fields":["filename"],"limit":3}]
Réduction composée Réduire par des champs composés de propriétés. Il n’y a pas de nombre maximal de champs, mais au moins deux champs doivent être spécifiés. Cette valeur limite doit être un entier compris entre 1 et 32767. "collapseProperties":[{"fields":["filename","author"],"limit":2}]
Réduction à plusieurs niveaux Réduire par collapseProperty niveau par niveau. Il n’y a pas de nombre maximal de niveaux, mais au moins deux niveaux doivent être spécifiés. La valeur limite de chaque niveau doit être un entier compris entre 1 et 32767, et doit être égale ou inférieure à la valeur limite de niveau supérieur. "collapseProperties":[{"fields":["filename"],"limit":3},{"fields":["author"],"limit":1}]

Exemples

Le tableau suivant présente un exemple de liste dans SharePoint. Les exemples de cette section utilisent cette liste pour montrer le fonctionnement de la propriété collapseProperties .

Filename Auteur Sujet Rank
Remarque Andy Poésie 1
Remarque James Historique 2
Remarque Robert Culture 3
Remarque James Mathématiques 4
Remarque James Sciences 5
Bloc-notes James Sciences 6
Bloc-notes Andy Culture 7
Bloc-notes James Sciences 8

Exemple 1 : Réduction de base

Demande

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
                }
            ]
        }
    ]
}

Regroupez les éléments en fonction du nom de fichier et affichez les trois premiers (« limite » : 3) pour chaque groupe. Comme vous pouvez le voir dans le tableau suivant, le classement est maintenu. Les trois premières et les trois dernières lignes restent, mais les lignes quatre et cinq sont exclues, car la limite collapseProperties est de 3.

Filename Auteur Sujet Rank
Remarque Andy Poésie 1
Remarque James Historique 2
Remarque Robert Culture 3
Bloc-notes James Sciences 6
Bloc-notes Andy Culture 7
Bloc-notes James Sciences 8

Exemple 2 : Réduction composée

Demande

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
                }
            ]
        }
    ]
}

Dans le tableau suivant, le classement est maintenu, mais les résultats sont réduits simultanément par deux propriétés pour rechercher des combinaisons uniques de Filename et Author. Cela entraîne la conservation des quatre premières lignes et l’exclusion de la ligne cinq, car la combinaison de Note (Nom_fichier) et James (Auteur) n’est autorisée que jusqu’à 2 fois. Les trois dernières lignes restent pour la même raison.

Filename Auteur Sujet Rank
Remarque Andy Poésie 1
Remarque James Historique 2
Remarque Robert Culture 3
Remarque James Mathématiques 4
Bloc-notes James Sciences 6
Bloc-notes Andy Culture 7
Bloc-notes James Sciences 8

Exemple 3 : Réduction à plusieurs niveaux

Demande

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
                }
            ]
        }
    ]
}

Dans le tableau suivant, le classement est maintenu, mais les résultats sont réduits d’abord sur Filename, puis sur Author. Pour la réduction de premier niveau sur Filename, avec une limite de 3, les trois premières lignes restent, les lignes quatre et cinq sont supprimées et les trois dernières lignes restent telles quelles. Pour la réduction de second niveau avec une limite de 1, les trois premières lignes ne changent pas, car chacune a une valeur d’auteur unique. La ligne huit est exclue, car James est de nouveau répertorié comme Auteur et cette propriété doit avoir des valeurs uniques.

Filename Auteur Sujet Rank
Remarque Andy Poésie 1
Remarque James Historique 2
Remarque Robert Culture 3
Bloc-notes James Sciences 6
Bloc-notes Andy Culture 7

Réponse

Lorsque vous utilisez collapseProperties, la réponse contient une propriété booléenne isCollapsed pour chaque résultat. Cette propriété indique l’état de réduction du résultat.

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)"
}

Limitations connues

La propriété collapseProperties n’est pas prise en charge pour les ressources suivantes : message, chatMessage, event, person, externalItem, bookmark, acronyme ou qna.

Étapes suivantes