English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Lors du traitement de la requête pendant l'opération de recherche, le module d'analyse analyse le contenu de tout index. Ce module est composé de l'analyseur, du générateur de jetons, du filtre de jetons et du filtre de caractères. Si l'analyseur n'est pas défini, l'analyseur intégré, les jetons, les filtres et le générateur de jetons sont enregistrés par défaut dans le module d'analyse.
Dans l'exemple suivant, nous utilisons un analyseur standard, qui est utilisé par défaut si aucun autre analyseur n'est spécifié. Il analyse la phrase en fonction de la grammaire et génère les mots utilisés dans la phrase.
POST _analyze { "analyseur" : "standard", "text": "aujourd'hui, le temps est magnifique" {}
Après l'exécution du code suivant, nous obtenons la réponse suivante :
{ "tokens": [ { "jeton" : "aujourd'hui", "start_offset": 0, "end_offset": 7, "type": "", "position": 0 }, { "token": "weather", "start_offset": 8, "end_offset": 15, "type": "", "position": 1 }, { "jeton" : "est", "start_offset": 16, "end_offset": 18, "type": "", "position": 2 }, { "token": "beautiful", "start_offset": 19, "end_offset": 28, "type": "", "position": 3 {} ]] {}
Nous pouvons configurer l'analyseur standard avec divers paramètres pour obtenir nos exigences personnalisées.
Dans l'exemple suivant, nous configurons l'analyseur standard avec max_token_length à5.
Pour cela, nous utilisons d'abord un analyseur avec le paramètre max_length_token pour créer l'index.
PUT index_4_analyse { "paramètres": { "analyse": { "analyseur": { "mon_analyseur_anglais": { "type": "standard", "max_token_length": 5, "stopwords": "_anglais_" {} {} {} {} {}
Ensuite, nous utilisons l'analyseur de texte suivant. Notez que les jetons ne sont pas affichés, car ils commencent et se terminent par deux espaces. Pour " le mot "is", dont le début et la fin sont précédés d'un espace. Si l'on retire tous les espaces, on obtient4un groupe de lettres espacées, ce qui ne signifie pas qu'il s'agit d'un mot. Au moins un caractère non-espace doit être présent au début ou à la fin pour qu'il devienne un mot à compter.
POST index_4_analyse/_analyser { "analyseur": "mon_analyseur_anglais", "text": "aujourd'hui, le temps est magnifique" {}
Après l'exécution du code suivant, nous obtenons la réponse suivante :
{ "tokens": [ { "token": "today" "start_offset": 0, "end_offset": 5, "type": "", "position": 0 }, { "token": "s", "start_offset": 6, "end_offset": 7, "type": "", "position": 1 }, { "token": "weath", "start_offset": 8, "end_offset": 13, "type": "", "position": 2 }, { "token": "er", "start_offset": 13, "end_offset": 15, "type": "", "position": 3 }, { "token": "beaut", "start_offset": 19, "end_offset": 24, "type": "", "position": 5 }, { "token": "iful", "start_offset": 24, "end_offset": 28, "type": "", "position": 6 {} ]] {}
Le tableau suivant liste divers analyseurs et leurs descriptions-
序号 | Analyseurs et descriptions |
---|---|
1 | Analyseur standard (standard) Les paramètres stopwords et max_token_length peuvent être définis pour cet analyseur. Par défaut, la liste stopwords est vide, et max_token_length est255. |
2 | Analyseur simple (simple) Cet analyseur est composé de tokenizer en minuscules. |
3 | Analyseur d'espaces (whitespace) Cet analyseur est composé de marqueurs d'espaces |
4 | Analyseur d'arrêt (stop) Il est possible de configurer stopwords et stopwords_path. Par défaut, stopwords est initialisé avec les mots arrêt en anglais, et stopwords_path contient le chemin vers le fichier texte contenant les mots arrêt. |
Le générateur de jetons est utilisé pour générer des jetons à partir du texte d'Elasticsearch. En prenant en compte les espaces ou les autres signes de ponctuation, le texte peut être décomposé en marqueurs. Elasticsearch dispose de nombreux segmenteurs intégrés, qui peuvent être utilisés dans les analyseurs personnalisés.
Voici un exemple de segmenteur, qui décompose le texte en plusieurs mots en présence de caractères non alphabétiques, mais qui met également tous les mots en minuscules, comme indiqué ci-dessous :-
POST _analyze { "tokenizer": "lowercase", "text": "Il était un beau temps", 5 Days ago." {}
Après l'exécution du code suivant, nous obtenons la réponse suivante :
{ "tokens": [ { "token": "it", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "was", "start_offset": 3, "end_offset": 6, "type": "word", "position": 1 }, { "token": "a", "start_offset": 7, "end_offset": 8, "type": "word", "position": 2 }, { "token": "beautiful", "start_offset": 9, "end_offset": 18, "type": "word", "position": 3 }, { "token": "weather", "start_offset": 19, "end_offset": 26, "type": "word", "position": 4 }, { "token": "days", "start_offset": 29, "end_offset": 33, "type": "word", "position": 5 }, { "token": "ago", "start_offset": 34, "end_offset": 37, "type": "word", "position": 6 {} ]] {}
令牌生成器的列表及其说明如下表所示:
序号 | 分词器和说明 |
---|---|
1 | 标准标记器 (standard) 这是基于基于语法的标记器构建的,max_token_length可以为这个标记器配置。 |
2 | 边缘 NGram 标记器(edgeNGram) 像min_gram, max_gram, token_chars这样的设置可以为这个标记器设置。 |
3 | 关键字标记器 (keyword) 这将生成整个输入作为输出,buffer_size可以为此设置。 |
4 | 字母标记器(letter) 这将捕获整个单词,直到遇到一个非字母。 |