Partager via


Ajouter des analyseurs personnalisés à des champs de chaîne dans l’index de Recherche Azure AI

Un analyseur personnalisé est une combinaison définie par l’utilisateur d’un générateur de jetons, d’un ou plusieurs filtres de jeton et d’un ou plusieurs filtres de caractères. Un analyseur personnalisé est spécifié dans un index de recherche, puis référencé par nom sur les définitions de champ qui nécessitent une analyse personnalisée. Un analyseur personnalisé est appelé par champ. Les attributs sur le champ déterminent s’il est utilisé pour l’indexation, les requêtes ou les deux.

Dans un analyseur personnalisé, les filtres de caractères préparent le texte d’entrée avant qu’il ne soit traité par le générateur de jetons (par exemple, en supprimant le balisage). Ensuite, le générateur de jetons décompose le texte en jetons. Enfin, les filtres de jeton modifient les jetons émis par le générateur de jetons. Pour des concepts et des exemples, consultez Analyseurs dans Recherche Azure AI.

Pourquoi utiliser un analyseur personnalisé

Un analyseur personnalisé vous permet de contrôler le processus de conversion de texte en jetons indexables et pouvant faire l’objet d’une recherche en vous permettant de choisir les types d’analyse ou de filtrage à appeler, ainsi que l’ordre dans lequel ils se produisent.

Créez et assignez un analyseur personnalisé si aucun des analyseurs par défaut (Lucence standard), des analyseurs intégrés ou des analyseurs de langage ne sont suffisants pour répondre à vos besoins. Vous pouvez également créer un analyseur personnalisé si vous souhaitez utiliser un analyseur intégré avec des options personnalisées. Par exemple, si vous souhaitez modifier maxTokenLength sur Standard, vous devez créer un analyseur personnalisé, avec un nom défini par l'utilisateur, pour définir cette option.

Les analyseurs personnalisés peuvent être utiles dans les scénarios suivants :

  • Utilisation de filtres de caractères pour supprimer le marquage HTML avant la segmentation des entrées de texte en unités lexicales, ou pour remplacer certains caractères ou symboles.

  • Recherche phonétique. Ajoutez un filtre phonétique pour permettre une recherche basée sur la façon dont un mot est prononcé et non pas sur la façon dont il s’écrit.

  • Analyse lexicale désactivée. Utilisez l’analyseur de mots clés pour créer des champs utilisables pour la recherche qui ne sont pas analysés.

  • Recherche rapide de préfixe/suffixe. Ajoutez le filtre de jetons Edge N-gram pour indexer les préfixes des mots afin de permettre la mise en correspondance rapide des préfixes. Combinez-le avec le filtre de jeton Reverse pour effectuer une correspondance de suffixes.

  • Segmentation personnalisée du texte en unités lexicales. Par exemple, utilisez le générateur de jetons Whitespace pour segmenter les phrases en jetons en utilisant l’espace comme délimiteur.

  • Conversion ASCII. Ajoutez le filtre de conversion ASCII Standard pour normaliser les signes diacritiques, comme ö ou ê, dans les termes de recherche.

Remarque

Les analyseurs personnalisés ne sont pas exposés dans le portail Azure. La seule façon d’ajouter un analyseur personnalisé est de le faire dans du code qui définit un index.

Créer un analyseur personnalisé

Pour créer un analyseur personnalisé, spécifiez-le dans la section analyzers d’un index au moment de la conception, puis référencez-le dans les champs de recherche Edm.String à l’aide de la propriété analyzer ou de la paire indexAnalyzer et searchAnalyzer.

Une définition d’analyseur inclut un nom, un type, un ou plusieurs filtres de caractères, un générateur de jetons au maximum, et un ou plusieurs filtres de jetons pour le traitement venant après la segmentation du texte en unités lexicales. Les filtres de caractères sont appliqués avant la segmentation du texte en unités lexicales. Les filtres de jetons et les filtres de caractères sont appliqués de gauche à droite.

  • Les noms dans un analyseur personnalisé doivent être uniques et ne peuvent pas identiques à ceux des analyseurs intégrés, des générateurs de jetons, des filtres de jetons ou des filtres de caractères. Il doit contenir uniquement des lettres, des chiffres, des espaces, des tirets ou des traits de soulignement. Il doit commencer et se terminer uniquement par des caractères alphanumériques, et ne doit pas dépasser 128 caractères.

  • Le type doit être #Microsoft.Azure.Search.CustomAnalyzer.

  • charFilters peut correspondre à un ou plusieurs filtres dans Filtres de caractères, traités avant la segmentation du texte en unités lexicales, dans l’ordre indiqué. Certains filtres de caractères ont des options qui peuvent être définies dans une section charFilters. Les filtres de caractères sont facultatifs.

  • tokenizer correspond à un seul Générateur de jetons. Une valeur est requise. Si vous avez besoin de plusieurs générateurs de jetons, vous pouvez créer plusieurs analyseurs personnalisés et les affecter champ par champ dans votre schéma d’index.

  • tokenFilters peut correspondre à un ou plusieurs filtres dans Filtres de jetons, traités après la segmentation du texte en unités lexicales, dans l’ordre indiqué. Pour les filtres de jetons avec des options, ajoutez une section tokenFilter pour spécifier la configuration. Les filtres de jetons sont facultatifs.

Les analyseurs ne doivent pas produire de jetons de plus de 300 caractères, sinon l’indexation échouera. Pour tronquer les jetons longs ou les exclure, utilisez respectivement TruncateTokenFilter et LengthTokenFilter. Consultez Filtres de jetons pour en savoir plus.

"analyzers":(optional)[
   {
      "name":"name of analyzer",
      "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
      "charFilters":[
         "char_filter_name_1",
         "char_filter_name_2"
      ],
      "tokenizer":"tokenizer_name",
      "tokenFilters":[
         "token_filter_name_1",
         "token_filter_name_2"
      ]
   },
   {
      "name":"name of analyzer",
      "@odata.type":"#analyzer_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"charFilters":(optional)[
   {
      "name":"char_filter_name",
      "@odata.type":"#char_filter_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"tokenizers":(optional)[
   {
      "name":"tokenizer_name",
      "@odata.type":"#tokenizer_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"tokenFilters":(optional)[
   {
      "name":"token_filter_name",
      "@odata.type":"#token_filter_type",
      "option1":value1,
      "option2":value2,
      ...
   }
]

Au sein d’une définition d’index, vous pouvez placer cette section n’importe où dans le corps d’une demande de création d’index, mais elle est généralement placée à la fin :

{
  "name": "name_of_index",
  "fields": [ ],
  "suggesters": [ ],
  "scoringProfiles": [ ],
  "defaultScoringProfile": (optional) "...",
  "corsOptions": (optional) { },
  "analyzers":(optional)[ ],
  "charFilters":(optional)[ ],
  "tokenizers":(optional)[ ],
  "tokenFilters":(optional)[ ]
}

La définition de l’analyseur est une partie de l’index. Les définitions des filtres de caractères, des générateurs de jetons et des filtres de jetons sont ajoutées à l’index seulement si vous définissez des options personnalisées. Pour utiliser tel quel un filtre ou un générateur de jetons existant, spécifiez son nom dans la définition de l’analyseur. Pour plus d’informations, consultez Créer un index (REST). Pour plus d’exemples, consultez Ajouter des analyseurs dans Recherche Azure AI.

Tester des analyseurs personnalisés

Vous pouvez utiliser l’Analyseur de test (REST) pour voir comment un analyseur décompose le texte donné en jetons.

Requête

  POST https://[search service name].search.windows.net/indexes/[index name]/analyze?api-version=[api-version]
    Content-Type: application/json
    api-key: [admin key]

  {
     "analyzer":"my_analyzer",
     "text": "Vis-à-vis means Opposite"
  }

Response

  {
    "tokens": [
      {
        "token": "vis_a_vis",
        "startOffset": 0,
        "endOffset": 9,
        "position": 0
      },
      {
        "token": "vis_à_vis",
        "startOffset": 0,
        "endOffset": 9,
        "position": 0
      },
      {
        "token": "means",
        "startOffset": 10,
        "endOffset": 15,
        "position": 1
      },
      {
        "token": "opposite",
        "startOffset": 16,
        "endOffset": 24,
        "position": 2
      }
    ]
  }

Mettre à jour des analyseurs personnalisés

Une fois qu’un analyseur, un générateur de jetons, un filtre de jetons ou un filtre de caractères est défini, il ne peut pas être modifié. D’autres peuvent être ajoutés à un index existant à condition que l’indicateur allowIndexDowntime soit défini comme true dans la demande de mise à jour de l’index :

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

Cette opération place votre index hors connexion pendant au moins quelques secondes, ce qui entraîne l’échec de vos demandes d’indexation et de requête. Les performances et la disponibilité en écriture de l’index peuvent être altérées pendant plusieurs minutes après la mise à jour de l’index, ou plus longtemps pour les très grands index. Ces effets sont cependant temporaires et finissent par se résoudre d’eux-mêmes.

Analyseurs intégrés

Si vous souhaitez utiliser un analyseur intégré avec des options personnalisées, la création d’un analyseur personnalisé est le mécanisme grâce auquel vous spécifiez ces options. En revanche, pour utiliser un analyseur intégré tel quel, il vous suffit de le référencer par son nom dans la définition du champ.

nom_analyseur analyzer_type 1 Description et options
mot clé (le type s’applique seulement quand des options sont disponibles) Traite l’intégralité du contenu d’un champ comme un seul jeton. Ceci est utile pour les données comme les codes postaux, les ID et certains noms de produit.
pattern PatternAnalyzer Sépare le texte de façon flexible en termes via un modèle d’expression régulière.

Options

lowercase (type : booléen) : détermine si les termes sont en minuscules. La valeur par défaut est true.

pattern (type : chaîne) : modèle d’expression régulière pour mettre en correspondance les séparateurs de jetons. La valeur par défaut est \W+, qui correspond aux caractères non alphabétiques.

flags (type : chaîne) : indicateurs d’expression régulière. La valeur par défaut est une chaîne vide. Valeurs autorisées : CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

stopwords (type : tableau de chaînes) : liste de mots vides. La valeur par défaut est une liste vide.
simple (le type s’applique seulement quand des options sont disponibles) Divise le texte à l’endroit des caractères qui ne sont pas des lettres et le convertit en minuscules.
standard
(Également appelé standard.lucene)
StandardAnalyzer Analyseur Lucene Standard, composé du générateur de jetons standard, du filtre lowercase et du filtre stop.

Options

maxTokenLength (type : entier) : la longueur maximale des jetons. La valeur par défaut est 255. Les jetons dépassant la longueur maximale sont fractionnés. La longueur maximale des jetons qui peut être utilisée est de 300 caractères.

stopwords (type : tableau de chaînes) : liste de mots vides. La valeur par défaut est une liste vide.
standardasciifolding.lucene (le type s’applique seulement quand des options sont disponibles) Analyseur standard avec filtre de conversion ASCII.
stop StopAnalyzer Divise un texte à l’endroit des caractères qui ne sont pas des lettres, applique les filtres de jetons lowercase et stopword.

Options

stopwords (type : tableau de chaînes) : liste de mots vides. La valeur par défaut est une liste prédéfinie pour l’anglais.
whitespace (le type s’applique seulement quand des options sont disponibles) Un analyseur qui utilise le générateur de jetons whitespace. Les jetons d’une longueur supérieure à 255 caractères sont fractionnés.

1 Les types d’analyseurs sont toujours préfixés dans le code avec #Microsoft.Azure.Search de sorte que PatternAnalyzer soit réellement spécifié comme #Microsoft.Azure.Search.PatternAnalyzer. Nous avons supprimé le préfixe par souci de concision, mais ce préfixe est obligatoire dans votre code.

Le type d’analyseur (type_analyseur) est fourni seulement pour les analyseurs qui peuvent être personnalisés. S’il n’existe pas d’options, comme c’est le cas avec l’analyseur keyword, aucun type #Microsoft.Azure.Search n’est associé.

Filtres de caractères

Les filtres de caractères ajoutent le traitement avant qu'une chaîne atteigne le générateur de jetons.

La Recherche Azure AI prend en charge les filtres de caractères dans la liste suivante. Vous trouverez plus d'informations sur chacune d'elles dans la référence de l'API Lucene.

nom_filtre_caractères char_filter_type 1 Description et options
html_strip (le type s’applique seulement quand des options sont disponibles) Un filtre de caractères qui tente d’enlever retirer les constructions HTML.
mapping MappingCharFilter Un filtre de caractères applique des mappages définis avec l’option mappings. La mise en correspondance est gourmande en ressources (la correspondance du modèle le plus long à un point donné l’emporte). La chaîne vide est autorisée comme remplacement.

Options

Mappings (type : tableau de chaînes) : une liste de mappages au format suivant : a=>b (toutes les occurrences du caractère a sont remplacées par le caractère b). Obligatoire.
pattern_replace PatternReplaceCharFilter Un filtre de caractères qui remplace des caractères dans la chaîne d’entrée. Il utilise une expression régulière pour identifier les séquences de caractères à conserver et un modèle de remplacement pour identifier les caractères à remplacer. Par exemple, le texte d’entrée = aa bb aa bb, modèle = (aa)\\\s+(bb) remplacement = $1#$2, résultat = aa#bb aa#bb.

Options

pattern (type : chaîne) : obligatoire.

replacement (type : chaîne) : obligatoire.

1 Les types de filtres de caractères sont toujours préfixés dans le code avec #Microsoft.Azure.Search de sorte que MappingCharFilter soit réellement spécifié comme #Microsoft.Azure.Search.MappingCharFilter. Nous avons supprimé le préfixe pour réduire la largeur du tableau, mais n’oubliez pas de l’inclure dans votre code. Notez que le type de filtre de caractères (type_filtre_caractères) est fourni seulement pour les filtres qui peuvent être personnalisés. S’il n’existe pas d’options, comme c’est le cas avec html_strip, aucun type #Microsoft.Azure.Search n’est associé.

Générateurs de jetons

Un générateur de jetons divise un texte continu en une séquence de jetons, par exemple en divisant une phrase en mots ou un mot en formes de racine.

La Recherche Azure AI prend en charge les générateurs de jetons dans la liste suivante. Vous trouverez plus d'informations sur chacune d'elles dans la référence de l'API Lucene.

nom_générateur_jetons tokenizer_type 1 Description et options
classique ClassicTokenizer Générateur de jetons basé sur la grammaire qui convient pour le traitement des documents dans la plupart des langues européennes.

Options

maxTokenLength (type : entier) : la longueur maximale des jetons. Par défaut : 255, maximum : 300. Les jetons dépassant la longueur maximale sont fractionnés.
edgeNGram EdgeNGramTokenizer Génère des jetons à partir de l’entrée depuis une délimitation en n-grammes d’une ou plusieurs tailles données.

Options

minGram (type : entier) : par défaut 1, maximum : 300.

maxGram (type : entier) : par défaut 2, maximum 300. Doit être supérieur à minGram.

tokenChars (type : tableau de chaînes) : classes de caractères à conserver dans les jetons. Valeurs autorisées :
letter, digit, whitespace, punctuation, symbol. La valeur par défaut est un tableau vide - conserve tous les caractères.
keyword_v2 KeywordTokenizerV2 Génère la totalité de l’entrée sous la forme d’un unique jeton.

Options

maxTokenLength (type : entier) : la longueur maximale des jetons. Par défaut : 256, maximum : 300. Les jetons dépassant la longueur maximale sont fractionnés.
letter (le type s’applique seulement quand des options sont disponibles) Divise un texte à l’endroit des caractères qui ne sont pas des lettres. Les jetons d’une longueur supérieure à 255 caractères sont fractionnés.
lowercase (le type s’applique seulement quand des options sont disponibles) Divise le texte à l’endroit des caractères qui ne sont pas des lettres et le convertit en minuscules. Les jetons d’une longueur supérieure à 255 caractères sont fractionnés.
microsoft_language_tokenizer MicrosoftLanguageTokenizer Divise le texte en utilisant des règles spécifiques à la langue.

Options

maxTokenLength (type : entier) : longueur maximale des jetons, par défaut 255, maximum 300. Les jetons dépassant la longueur maximale sont fractionnés. Les jetons de plus de 300 caractères sont d’abord fractionnés en jetons d’une longueur de 300 caractères, puis chacun de ces jetons est ensuite fractionné selon la valeur définie pour maxTokenLength.

isSearchTokenizer (type : booléen) : défini sur true si utilisé comme générateur de jetons de recherche, sur false si utilisé comme générateur de jetons d’indexation.

language (type : chaîne) : langue à utiliser, par défaut english. Les valeurs autorisées sont les suivantes :
bangla, bulgarian, catalan, chineseSimplified, chineseTraditional, croatian, czech, danish, dutch, english, french, german, greek, gujarati, hindi, icelandic, indonesian, italian, japanese, kannada, korean, malay, malayalam, marathi, norwegianBokmaal, polish, portuguese, portugueseBrazilian, punjabi, romanian, russian, serbianCyrillic, serbianLatin, slovenian, spanish, swedish, tamil, telugu, thai, ukrainian, urdu, vietnamese
microsoft_language_stemming_tokenizer MicrosoftLanguageStemmingTokenizer Divise le texte en utilisant des règles spécifiques à la langue et réduit les mots à leurs formes de base. Ce générateur de jetons effectue la lemmatisation.

Options

maxTokenLength (type : entier) : longueur maximale des jetons, par défaut 255, maximum 300. Les jetons dépassant la longueur maximale sont fractionnés. Les jetons de plus de 300 caractères sont d’abord fractionnés en jetons d’une longueur de 300 caractères, puis chacun de ces jetons est ensuite fractionné selon la valeur définie pour maxTokenLength.

isSearchTokenizer (type : booléen) : défini sur true si utilisé comme générateur de jetons de recherche, sur false si utilisé comme générateur de jetons d’indexation.

language (type : chaîne) : langue à utiliser, par défaut english. Les valeurs autorisées sont les suivantes :
arabic, bangla, bulgarian, catalan, croatian, czech, danish, dutch, english, estonian, finnish, french, german, greek, gujarati, hebrew, hindi, hungarian, icelandic, indonesian, italian, kannada, latvian, lithuanian, malay, malayalam, marathi, norwegianBokmaal, polish, portuguese, portugueseBrazilian, punjabi, romanian, russian, serbianCyrillic, serbianLatin, slovak, slovenian, spanish, swedish, tamil, telugu, turkish, ukrainian, urdu
nGram NGramTokenizer Génère des jetons à partir de l’entrée en n-grammes d’une ou plusieurs tailles données.

Options

minGram (type : entier) : par défaut 1, maximum : 300.

maxGram (type : entier) : par défaut 2, maximum 300. Doit être supérieur à minGram.

tokenChars (type : tableau de chaînes) : classes de caractères à conserver dans les jetons. Valeurs autorisées : letter, digit, whitespace, punctuation, symbol. La valeur par défaut est un tableau vide - conserve tous les caractères.
path_hierarchy_v2 PathHierarchyTokenizerV2 Générateur de jetons pour les hiérarchies de type chemin. Options

delimiter (type : chaîne) : par défaut : '/.

replacement (type : chaîne) : s’il est défini, remplace le caractère délimiteur. Par défaut, identique à la valeur du délimiteur.

maxTokenLength (type : entier) : la longueur maximale des jetons. Par défaut : 300, maximum : 300. Les chemins plus longs que maxTokenLength sont ignorés.

reverse (type : booléen) : si la valeur est true, génère le jeton dans l’ordre inverse. Valeur par défaut : false.

skip (type : booléen) : jetons initiaux à ignorer. La valeur par défaut est 0.
pattern PatternTokenizer Ce générateur de jetons utilise la correspondance de modèle d’expression régulière pour construire des jetons distincts.

Options

pattern (type : chaîne) : un modèle d’expression régulière pour mettre en correspondance les séparateurs de jetons. La valeur par défaut est \W+, qui correspond aux caractères non alphabétiques.

flags (type : chaîne) : indicateurs d’expression régulière. La valeur par défaut est une chaîne vide. Valeurs autorisées : CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

group (type : entier) : groupe à extraire dans les jetons. La valeur par défaut est -1 (diviser).
standard_v2 StandardTokenizerV2 Décompose le texte en suivant les règles de segmentation du texte Unicode.

Options

maxTokenLength (type : entier) : la longueur maximale des jetons. Par défaut : 255, maximum : 300. Les jetons dépassant la longueur maximale sont fractionnés.
uax_url_email UaxUrlEmailTokenizer Génère des jetons pour des URL et des e-mails sous la forme d’un seul jeton.

Options

maxTokenLength (type : entier) : la longueur maximale des jetons. Par défaut : 255, maximum : 300. Les jetons dépassant la longueur maximale sont fractionnés.
whitespace (le type s’applique seulement quand des options sont disponibles) Divise le texte au niveau des espaces. Les jetons d’une longueur supérieure à 255 caractères sont fractionnés.

1 Les types de générateurs de jetons sont toujours préfixés dans le code avec #Microsoft.Azure.Search de sorte que ClassicTokenizer soit réellement spécifié comme #Microsoft.Azure.Search.ClassicTokenizer. Nous avons supprimé le préfixe pour réduire la largeur du tableau, mais n’oubliez pas de l’inclure dans votre code. Notez que le type de générateur de jetons (type_générateur_jetons) est fourni seulement pour les générateurs de jetons qui peuvent être personnalisés. S’il n’existe pas d’options, comme c’est le cas avec le générateur de jetons letter, aucun type #Microsoft.Azure.Search n’est associé.

Filtres de jeton

Un filtre de jetons est utilisé pour filtrer ou modifier les jetons générés par un générateur de jetons. Par exemple, vous pouvez spécifier un filtre lowercase qui convertit tous les caractères en minuscules. Vous pouvez avoir plusieurs filtres de jetons dans un analyseur personnalisé. Les filtres de jetons s’exécutent dans l’ordre où ils sont listés.

Dans le tableau ci-dessous, les filtres de jetons qui sont implémentés avec Apache Lucene sont liés à la documentation de l’API Lucene.

nom_filtre_jetons token_filter_type 1 Description et options
arabic_normalization (le type s’applique seulement quand des options sont disponibles) Un filtre de jetons qui applique le normaliseur arabe pour normaliser l’orthographe.
apostrophe (le type s’applique seulement quand des options sont disponibles) Supprime tous les caractères suivant une apostrophe (y compris l’apostrophe elle-même).
asciifolding AsciiFoldingTokenFilter Convertit les caractères Unicode alphabétiques, numériques et symboliques qui ne sont pas dans les 127 premiers caractères ASCII (le bloc Unicode Basic Latin) en leur équivalent ASCII, s’il existe.

Options

preserveOriginal (type : booléen) : si la valeur est true, le jeton d’origine est conservé. La valeur par défaut est false.
cjk_bigram CjkBigramTokenFilter Forme des digrammes de termes CJC qui sont générés à partir de StandardTokenizer.

Options

ignoreScripts (type : tableau de chaînes) : scripts à ignorer. Les valeurs autorisées sont han, hiragana, katakana et hangul. La valeur par défaut est une liste vide.

outputUnigrams (type : booléen) : à définir sur true si vous voulez toujours obtenir en sortie des unigrammes et des digrammes. La valeur par défaut est false.
cjk_width (le type s’applique seulement quand des options sont disponibles) Normalise les différences de largeur de CJC. Convertit les variantes ASCII pleine chasse en équivalent Latin de base, et les variantes Katakana demi-chasse en équivalent kana.
classique (le type s’applique seulement quand des options sont disponibles) Supprime les possessifs anglais et les points des acronymes.
common_grams CommonGramTokenFilter Construit des digrammes pour les termes d’occurrence fréquente lors de l’indexation. Les termes uniques sont néanmoins aussi indexés, avec des digrammes superposés.

Options

commonWords (type : tableau de chaînes) : l’ensemble des mots courants. La valeur par défaut est une liste vide. Obligatoire.

ignoreCase (type : booléen) : Si la valeur est true, la mise en correspondance ne respecte pas la casse. La valeur par défaut est false.

queryMode (type : booléen) : génère des digrammes, puis supprime les mots courants et les termes uniques suivis d’un mot courant. La valeur par défaut est false.
dictionary_decompounder DictionaryDecompounderTokenFilter Décompose les mots composés trouvés dans beaucoup de langues germaniques.

Options

wordList (type : tableau de chaînes) : la liste de mots dans laquelle rechercher des correspondances. La valeur par défaut est une liste vide. Obligatoire.

minWordSize (type : entier) : seuls les mots d’une longueur supérieure à cette taille sont traités. La valeur par défaut est 5.

minSubwordSize (type : entier) : seuls les sous-mots d’une longueur supérieure à cette taille figurent dans les résultats. La valeur par défaut est 2.

maxSubwordSize (type : entier) : seuls les sous-mots d’une longueur inférieure à cette taille figurent dans les résultats. La valeur par défaut est 15.

onlyLongestMatch (type : booléen) : ajoute seulement le sous-mot correspondant le plus long à la sortie. La valeur par défaut est false.
edgeNGram_v2 EdgeNGramTokenFilterV2 Génère des n-grammes de la ou des tailles données en démarrant de l’avant ou de l’arrière d’un jeton d’entrée.

Options

minGram (type : entier) : par défaut 1, maximum : 300.

maxGram (type : entier) : par défaut : 2, maximum : 300. Doit être supérieur à minGram.

side (type : chaîne) : spécifie le côté de l’entrée à partir duquel le n-gramme doit être généré. Valeurs autorisées : front, back
elision ElisionTokenFilter Supprime les élisions. Par exemple, l'avion (l’avion) est converti en avion (avion).

Options

articles (type : tableau de chaînes) : un ensemble d’articles à supprimer. La valeur par défaut est une liste vide. Si aucune liste d’articles n’est définie, par défaut, tous les articles du français sont supprimés.
german_normalization (le type s’applique seulement quand des options sont disponibles) Normalise les caractères allemands en fonction de l’heuristique de l’algorithme Snowball German2.
hindi_normalization (le type s’applique seulement quand des options sont disponibles) Normalise le texte dans Hindi de façon à supprimer des différences dans les variations orthographiques.
indic_normalization IndicNormalizationTokenFilter Normalise la représentation Unicode du texte dans les langues indiennes.
keep KeepTokenFilter Filtre de jetons qui conserve seulement les jetons avec du texte contenu dans la liste de mots spécifiée.

Options

keepWords (type : tableau de chaînes) : une liste de mots à conserver. La valeur par défaut est une liste vide. Obligatoire.

keepWordsCase (type : booléen) : si la valeur est true, convertit d’abord tous les mots en minuscules. La valeur par défaut est false.
keyword_marker KeywordMarkerTokenFilter Marque les termes comme mots clés.

Options

keywords (type : tableau de chaînes) : une liste de mots à marque comme mots clés. La valeur par défaut est une liste vide. Obligatoire.

ignoreCase (type : booléen) : si la valeur est true, convertit d’abord tous les mots en minuscules. La valeur par défaut est false.
keyword_repeat (le type s’applique seulement quand des options sont disponibles) Génère deux fois chaque jeton entrant : une fois comme mot clé et une fois comme non-mot clé.
kstem (le type s’applique seulement quand des options sont disponibles) Un filtre kstem à hautes performances pour l’anglais.
length LengthTokenFilter Supprime les mots qui sont trop longs ou trop courts.

Options

min (type : entier) : le nombre minimal. Par défaut : 0, maximum : 300.

max (type : entier) : le nombre maximal. Par défaut : 300, maximum : 300.
limit Microsoft.Azure.Search.LimitTokenFilter Limite le nombre de jetons lors de l’indexation.

Options

maxTokenCount (type : entier) : nombre maximal de jetons à produire. La valeur par défaut est 1.

consumeAllTokens (type : booléen) : indique si tous les jetons de l’entrée doivent être utilisés même si maxTokenCount est atteint. La valeur par défaut est false.
lowercase (le type s’applique seulement quand des options sont disponibles) Normalise le texte des jetons en minuscules.
nGram_v2 NGramTokenFilterV2 Génère des n-grammes de la taille donnée.

Options

minGram (type : entier) : par défaut 1, maximum : 300.

maxGram (type : entier) : par défaut : 2, maximum : 300. Doit être supérieur à minGram.
pattern_capture PatternCaptureTokenFilter Utilise des expressions régulières Java pour générer plusieurs jetons, un pour chaque groupe de capture dans un ou plusieurs modèles.

Options

patterns (type : tableau de chaînes) : une liste de modèles à mettre en correspondance avec chaque jeton. Obligatoire.

preserveOriginal (type : booléen) : à définir sur true pour retourner le jeton d’origine, même si un des modèles est en correspondance. Valeur par défaut : true
pattern_replace PatternReplaceTokenFilter Un filtre de jeton qui applique un modèle à chaque jeton du flux, en remplaçant les occurrences en correspondance par la chaîne de remplacement spécifiée.

Options

pattern (type : chaîne) : obligatoire.

replacement (type : chaîne) : obligatoire.
persian_normalization (le type s’applique seulement quand des options sont disponibles) Applique la normalisation pour le persan.
phonetic PhoneticTokenFilter Crée des jetons pour les correspondances phonétiques.

Options

encoder (type : chaîne) : Encodeur phonétique à utiliser. Les valeurs autorisées sont metaphone, doubleMetaphone, soundex, refinedSoundex, caverphone1, caverphone2, cologne, nysiis, koelnerPhonetik, haasePhonetik et beiderMorse. Par défaut : metaphone. La valeur par défaut est metaphone.

Pour plus d’informations, consultez encoder.

replace (type : booléen) : true si les jetons encodés doivent remplacer les jetons d’origine ; false s’ils doivent être ajoutés comme synonymes. La valeur par défaut est true.
porter_stem (le type s’applique seulement quand des options sont disponibles) Transforme le flux de jetons selon l’algorithme de recherche de radical de Porter.
inverser (le type s’applique seulement quand des options sont disponibles) Inverse la chaîne des jetons.
scandinavian_normalization (le type s’applique seulement quand des options sont disponibles) Normalise l’utilisation des caractères scandinaves interchangeables.
scandinavian_folding (le type s’applique seulement quand des options sont disponibles) Convertit les caractères scandinaves åÅäæÄÆ en a and öÖøØ en o. Il identifie aussi l’utilisation des voyelles doubles aa, ae, ao, oe et oo, et conserve seulement la première voyelle.
shingle ShingleTokenFilter Crée des combinaisons de jetons sous la forme d’un unique jeton.

Options

maxShingleSize (type : entier) : la valeur par défaut est 2.

minShingleSize (type : entier) : la valeur par défaut est 2.

outputUnigrams (type : booléen) : si la valeur est true, le flux de sortie contient les jetons d’entrée (unigrammes) ainsi que les n-grammes composés de mots. La valeur par défaut est true.

outputUnigramsIfNoShingles (type : booléen) : si la valeur est true, remplace le comportement de outputUnigrams==false quand aucun n-gramme composé de mots n’est disponible. La valeur par défaut est false.

tokenSeparator (type : chaîne) : la chaîne à utiliser lors de la jonction de jetons adjacents pour former un n-gramme composé de mots. La valeur par défaut est un espace vide unique .

filterToken (type : chaîne) : la chaîne à insérer pour chaque position à laquelle il n’y a pas de jeton. Par défaut, il s’agit de _.
snowball SnowballTokenFilter Filtre de jetons Snowball.

Options

language (type : chaîne) : les valeurs autorisées sont : armenian, basque, catalan, danish, dutch, english, finnish, french, german, german2, hungarian, italian, kp, lovins, norwegian, porter, portuguese, romanian, russian, spanish, swedish, turkish
sorani_normalization SoraniNormalizationTokenFilter Normalise la représentation Unicode du texte en Sorani.

Options

Aucune.
stemmer StemmerTokenFilter Filtre de recherche de radical spécifique à la langue.

Options

language (type : chaîne) : les valeurs autorisées sont :
- arabic
- armenian
- basque
- brazilian
- bulgarian
- catalan
- czech
- danish
- dutch
- dutchKp
- english
- lightEnglish
- minimalEnglish
- possessiveEnglish
- porter2
- lovins
- finnish
- lightFinnish
- french
- lightFrench
- minimalFrench
- galician
- minimalGalician
- german
- german2
- lightGerman
- minimalGerman
- greek
- hindi
- hungarian
- lightHungarian
- indonesian
- irish
- italian
- lightItalian
- sorani
- latvian
- norwegian
- lightNorwegian
- minimalNorwegian
- lightNynorsk
- minimalNynorsk
- portuguese
- lightPortuguese
- minimalPortuguese
- portugueseRslp
- romanian
- russian
- lightRussian
- spanish
- lightSpanish
- swedish
- lightSwedish
- turkish
stemmer_override StemmerOverrideTokenFilter Les termes dont le radical est trouvé dans un dictionnaire sont marqués comme mots clés, ce qui empêche la recherche de radical plus avant dans la chaîne. Doit être placé avant les filtres de recherche de radical.

Options

rules (type : tableau de chaînes) : règles de recherche de radical au format suivant word => stem, par exemple ran => run. La valeur par défaut est une liste vide. Obligatoire.
stopwords StopwordsTokenFilter Supprime les mots vides d’un flux de jetons. Par défaut, le filtre utilise une liste de mots vides prédéfinie pour l’anglais.

Options

stopwords (type : tableau de chaînes) : liste de mots vides. Ne peut pas être spécifié si une liste stopwordsList est spécifiée.

stopwordsList (type : chaîne) : une liste prédéfinie de mots vides. Ne peut pas être spécifié si stopwords est spécifié. Les valeurs autorisées sont arabic, armenian, basque, brazilian, bulgarian, catalan, czech, danish, dutch, english, finnish, french, galician, german, greek, hindi, hungarian, indonesian, irish, italian, latvian, norwegian, persian, portuguese, romanian, russian, sorani, spanish, swedish, thai, turkish, par défaut : english. Ne peut pas être spécifié si stopwords est spécifié.

ignoreCase (type : booléen) : si la valeur est true, tous les mots sont d’abord convertis en minuscules. La valeur par défaut est false.

removeTrailing (type : booléen) : si la valeur est true, ignore le dernier terme de recherche s’il s’agit d’un mot vide. La valeur par défaut est true.
synonym SynonymTokenFilter Met en correspondance des synonymes constitués d’un ou plusieurs mots dans un flux de jetons.

Options

synonyms (type : tableau de chaînes) : obligatoire. Liste des synonymes dans l’un des deux formats suivants :

- incroyable, inouï, fabuleux => étonnant : tous les termes du côté gauche du symbole => sont remplacés par tous les termes du côté droit.

- incroyable, inouï, fabuleux, étonnant : une liste séparée par des virgules de mots équivalents. Définissez l’option expand pour changer la façon dont cette liste est interprétée.

ignoreCase (type : booléen) : convertit la casse de l’entrée pour la mise en correspondance. La valeur par défaut est false.

expand (type : booléen) : si la valeur est true, tous les mots de la liste des synonymes (si la notation « => » n’est pas utilisée) sont mappés les uns aux autres.
La liste suivante : incroyable, inouï, fabuleux, étonnant équivaut à : incroyable, inouï, fabuleux, étonnant => incroyable, inouï, fabuleux, étonnant

- Si la valeur est false, la liste suivante : incroyable, inouï, fabuleux, étonnant équivaut à : incroyable, inouï, fabuleux, étonnant => incroyable.
trim (le type s’applique seulement quand des options sont disponibles) Supprime les espaces de début et de fin des jetons.
truncate TruncateTokenFilter Tronque les termes à une longueur spécifique.

Options

length (type : entier) : par défaut 300, maximum 300. Obligatoire.
unique UniqueTokenFilter Élimine les jetons avec le même texte que le jeton précédent.

Options

onlyOnSamePosition (type : booléen) : s’il est défini, supprime les doublons seulement à la même position. La valeur par défaut est true.
uppercase (le type s’applique seulement quand des options sont disponibles) Normalise le texte des jetons en majuscules.
word_delimiter WordDelimiterTokenFilter Divise les mots en sous-mots et effectue des transformations facultatives sur les groupes de sous-mots.

Options

generateWordParts (type : booléen) : provoque la génération de parties de mots ; par exemple AzureSearch devient Azure Search. La valeur par défaut est true.

generateNumberParts (type : booléen) : provoque la génération de sous-mots constitués de nombres. La valeur par défaut est true.

catenateWords (type : booléen) : provoque la concaténation maximale des parties de mots ; par exemple Azure-Search devient AzureSearch. La valeur par défaut est false.

catenateNumbers (type : booléen) : provoque la concaténation maximale des parties numériques ; par exemple 1-2 devient 12. La valeur par défaut est false.

catenateAll (type : booléen) : provoque la concaténation de tous les éléments qui sont des sous-mots ; par exemple Azure-Search-1 devient AzureSearch1. La valeur par défaut est false.

splitOnCaseChange (type : booléen) : si la valeur est true, fractionne les mots au niveau des changements de casse ; par exemple AzureSearch devient Azure Search. La valeur par défaut est true.

preserveOriginal : fait que les mots d’origine sont conservés et ajoutés à la liste des sous-mots. La valeur par défaut est false.

splitOnNumerics (type : booléen) : si la valeur est true, fractionne au niveau des nombres ; par exemple Azure1Search devient Azure 1 Search. La valeur par défaut est true.

stemEnglishPossessive (type : booléen) : provoque la suppression du 's final pour chaque sous-mot. La valeur par défaut est true.

protectedWords (type : tableau de chaînes) : jetons à protéger de la délimitation. La valeur par défaut est une liste vide.

1 Les types de filtres de jetons sont toujours préfixés dans le code avec #Microsoft.Azure.Search de sorte que ArabicNormalizationTokenFilter soit réellement spécifié comme #Microsoft.Azure.Search.ArabicNormalizationTokenFilter. Nous avons supprimé le préfixe pour réduire la largeur du tableau, mais n’oubliez pas de l’inclure dans votre code.

Voir aussi