Share via


Ajouter une vérification orthographique aux requêtes dans Recherche Azure AI

Important

La correction orthographique est en préversion publique et soumise à des conditions d'utilisation supplémentaires. Il est disponible via le portail Azure, les API REST en préversion et les versions bêta des bibliothèques du Kit de développement logiciel (SDK) Azure.

Vous pouvez améliorer le rappel en corrigeant les mots dans une requête avant d’atteindre le moteur de recherche. Le paramètre speller est pris en charge pour tous les types de requêtes texte (non vectoriel).

Prérequis

  • Un service de recherche au niveau De base ou supérieur, dans n’importe quelle région.

  • Un index de recherche existant avec du contenu dans une langue prise en charge.

  • Une demande de requête qui a speller=lexicon et queryLanguage définie sur une langue prise en charge. La vérification orthographique fonctionne sur les chaînes passées dans le paramètre search. Il n’est pas pris en charge pour les filtres, la recherche approximative, la recherche générique, les expressions régulières ou les requêtes vectorielles.

Utilisez un client de recherche qui prend en charge les API en préversion sur la demande de requête. Vous pouvez utiliser un client REST ou le code que vous avez modifié pour effectuer des appels REST vers les API en préversion. Vous pouvez également utiliser les versions bêta des kits de développement logiciel (SDK) Azure.

Bibliothèque cliente Versions
API REST Versions 2020-06-30-Preview et ultérieures. La version actuelle est 2023-10-01-Preview
Azure SDK pour .NET version 11.5.0-beta.5
Kit de développement logiciel (SDK) Azure pour Java version 11.6.0-beta.5
Kit de développement logiciel (SDK) pour JavaScript version 11.3.0-beta.8
Kit de développement logiciel (SDK) Azure pour Python version 11.4.0b3

L’exemple suivant utilise l’index intégré hotels-sample pour illustrer la correction orthographique sur une requête de texte simple. Sans correction orthographique, la requête ne retourne aucun résultat. Avec la correction, la requête retourne un résultat pour l’hôtel familial Johnson.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "famly acitvites",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "queryType": "simple",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

Correction orthographique avec la syntaxe Lucene complète

La correction orthographique est appliquée aux termes de requête individuels faisant l’objet d’une analyse de texte. C’est pourquoi vous pouvez utiliser le paramètre speller avec certaines requêtes Lucene, mais pas avec d’autres.

  • Certains formulaires de requête incompatibles contournent l’analyse de texte, notamment ceux avec des caractères génériques ou des expressions régulières et ceux portant sur des requêtes approximatives.
  • Les formulaires de requête compatibles sont ceux incluant des recherches par champ, ceux portant sur une recherche de proximité ou ceux avec promotion de termes.

Cet exemple utilise la recherche par champ sur le champ Category, avec la syntaxe Lucene complète et un terme de requête mal orthographié. Quand le vérificateur d’orthographe est inclus, la faute de frappe dans « Suiite » est corrigée et la requête aboutit.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "Category:(Resort and Spa) OR Category:Suiite",
    "queryType": "full",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "select": "Category",
    "count": true
}

Correction orthographique avec classement sémantique

Dans cette requête, un seul terme est correctement orthographié. Elle fait l’objet de corrections orthographiques pour retourner des résultats pertinents. Pour plus d’informations, consultez Configurer le classement sémantique.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview     
{
    "search": "hisotoric hotell wiht great restrant nad wiifi",
    "queryType": "semantic",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "searchFields": "HotelName,Tags,Description",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

Langues prises en charge

Les valeurs valides pour queryLanguage sont disponibles dans le tableau suivant, copiées dans la liste des langues prises en charge (référence de l’API REST).

Langage queryLanguage
Anglais [EN] EN, EN-US (par défaut)
Espagnol [ES] ES, ES-ES (par défaut)
Français [FR] FR, FR-FR (par défaut)
Allemand [DE] DE, DE-DE (par défaut)
Néerlandais [NL] NL, NL-BE, NL-NL (par défaut)

Remarque

Auparavant, alors que le classement sémantique était en préversion publique, le paramètre queryLanguage était également utilisé pour le classement sémantique. Le classement sémantique est désormais indépendant du langage.

Considérations relatives à l’analyseur de langue

Les index qui contiennent du contenu non anglais utilisent souvent des analyseurs de langue sur des champs non anglais pour appliquer les règles linguistiques de la langue native.

Lorsque vous ajoutez une vérification orthographique au contenu qui subit également une analyse linguistique, vous pouvez obtenir de meilleurs résultats à l’aide de la même langue pour chaque étape d’indexation et de traitement des requêtes. Par exemple, si le contenu d’un champ a été indexé à l’aide de l’analyseur de langage « fr.microsoft », les requêtes et la vérification orthographique doivent tous utiliser un Français lexique ou une bibliothèque de langage de certains formulaires.

Pour récapituler comment sont utilisées les bibliothèques de langage dans Recherche Azure AI :

  • Les analyseurs linguistiques peuvent être appelés pendant l’indexation et l’exécution des requêtes. Il s’agit d’analyseurs avec la syntaxe Lucene Apache (par exemple « de.lucene ») ou Microsoft (« de.microsoft »).

  • Les lexiques linguistiques appelés lors de la vérification orthographique sont spécifiés à l’aide de l’un des codes de langue dans la table de langue prise en charge.

Dans une requête de requête, la valeur affectée à queryLanguage s’applique à speller.

Remarque

La cohérence de la langue entre les différentes valeurs de propriété pose problème uniquement si vous utilisez des analyseurs linguistiques. Si vous utilisez des analyseurs indépendantes du langage (par exemple, mot clé, simple, standard, stop, espace blanc ou standardasciifolding.lucene), la valeur queryLanguage peut être la valeur souhaitée.

Même si le contenu d’un index de recherche peut inclure plusieurs langues, l’entrée de requête est généralement formulée en une langue unique. Le moteur de recherche ne vérifie pas la compatibilité de queryLanguage, de l’analyseur de langage et de la langue dans laquelle le contenu est composé. Veillez donc à étendre les requêtes en conséquence pour éviter de produire des résultats incorrects.

Étapes suivantes