Utiliser l’API Microsoft Recherche pour demander des corrections orthographiques

Vous pouvez utiliser l’API Microsoft Recherche dans Microsoft Graph pour demander des corrections orthographiques afin de gérer les incompatibilités entre les fautes de frappe dans les requêtes utilisateur et les mots corrects dans le contenu correspondant. Pour demander des corrections orthographiques, spécifiez les propriétés suivantes dans la propriété queryAlterationOptions de searchRequest :

  • enableSuggestion pour activer/désactiver les suggestions d’orthographe pour la requête utilisateur. Vous pouvez passer pour obtenir les informations de correction orthographique suggérées pour les fautes true de frappe dans la requête de l’utilisateur.

  • enableModification pour activer/désactiver les modifications orthographiques pour la requête utilisateur. Vous pouvez passer pour obtenir les résultats de la recherche pour la requête corrigée lorsqu’il n’y a pas de résultats pour la requête d’origine avec des fautes true de frappe, et obtenir les informations de correction correspondantes.

La priorité de la modification orthographique est supérieure à la suggestion d’orthographe si elles sont toutes deux activées.

Si la suggestion d’orthographe est désactivée alors que la modification de l’orthographe est activée, les résultats peuvent toujours contenir la suggestion d’orthographe pour la requête d’origine avec la faute de frappe. Cela est dû à la conception, car la fonctionnalité fournit la suggestion d’orthographe par défaut si la modification orthographique est activée.

Toutes les chaînes de requête de l’utilisateur doivent être identiques pour permettre des corrections orthographiques pour les recherches de plusieurs entités.

Exemple 1 : Demander des suggestions d’orthographe

L’exemple suivant interroge les ressources listItem qui contiennent la chaîne accountt et demande une suggestion d’orthographe pour la requête.

La réponse contient des objets alterationResponse pour la suggestion d’orthographe.

Demande

POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json

{
    "requests": [
        {
            "entityTypes": [
                "listItem"
            ],
            "query": {
                "queryString": "accountt"
            },
            "from": 0,
            "size": 25,
            "queryAlterationOptions": {
                "enableSuggestion": true,
                "enableModification": false
            }
        }
    ]
}

Réponse

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)",
    "value": [
        {
            "searchTerms": [
                "accountt"
            ],
            "hitsContainers": [
                {
                    "total": 0,
                    "moreResultsAvailable": false
                }
            ],
            "queryAlterationResponse": {
                "@odata.type": "#microsoft.substrateSearch.alterationResponse",
                "originalQueryString": "accountt",
                "queryAlteration": {
                    "@odata.type": "#microsoft.substrateSearch.searchAlteration",
                    "alteredQueryString": "account",
                    "alteredHighlightedQueryString": "account",
                    "alteredQueryTokens": [
                        {
                            "offset": 0,
                            "length": 8,
                            "suggestion": "account"
                        }
                    ]
                },
                "queryAlterationType": "Suggestion"
            }
        }
    ]
}

Exemple 2 : Demander des modifications orthographiques

L’exemple suivant interroge les ressources listItem qui contiennent la chaîne accountt et demande une modification orthographique pour la requête.

Dans cet exemple, il n’existe aucun résultat pour la requête d’origine avec faute de frappe accountt. La réponse contient les résultats liés aux objets string account et alterationResponse corrigés pour la modification orthographique.

Demande

POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json

{
    "requests": [
        {
            "entityTypes": [
                "listItem"
            ],
            "query": {
                "queryString": "accountt"
            },
            "from": 0,
            "size": 25,
            "queryAlterationOptions": {
                "enableSuggestion": true,
                "enableModification": true
            }
        }
    ]
}

Réponse

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)",
    "value": [
        {
            "searchTerms": [
                "account"
            ],
            "hitsContainers": [
                {
                    "total": 1,
                    "moreResultsAvailable": false,
                    "hits": [
                        {
                            "hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
                            "rank": 1,
                            "summary": "",
                            "resource": {
                                "@odata.type": "#microsoft.graph.listItem",
                                "createdDateTime": "2019-06-10T06:37:43Z",
                                "lastModifiedDateTime": "2019-06-10T06:37:43Z",
                                "name": "web_part_test_long Notebook",
                                "webUrl": "https://contoso.sharepoint.com/sites/contoso-team/Lists/Issue tracker list/DispForm.aspx?ID=1",
                                "sharepointIds": {
                                    "listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
                                    "listItemId": "13"
                                },
                                "createdBy": {
                                    "user": {
                                        "displayName": "System Account"
                                    }
                                },
                                "lastModifiedBy": {
                                    "user": {
                                        "displayName": "System Account"
                                    }
                                },
                                "parentReference": {
                                    "sharepointIds": {
                                        "listId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b"
                                    },
                                    "siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
                                }
                            }
                        }
                    ]
                }
            ],
            "queryAlterationResponse": {
                "@odata.type": "#microsoft.substrateSearch.alterationResponse",
                "originalQueryString": "accountt",
                "queryAlteration": {
                    "@odata.type": "#microsoft.substrateSearch.searchAlteration",
                    "alteredQueryString": "account",
                    "alteredHighlightedQueryString": "account",
                    "alteredQueryTokens": [
                        {
                            "offset": 0,
                            "length": 8,
                            "suggestion": "account"
                        }
                    ]
                },
                "queryAlterationType": "Modification"
            }
        }
    ]
}

Limitations connues

La correction orthographique est uniquement prise en charge pour les ressources suivantes : message, événement, site, lecteur, driveItem, listItem et externalItem.

Étapes suivantes