Recherche…


Remarques

Les analyseurs prennent le texte d'un champ de chaîne et génèrent des jetons qui seront utilisés lors de l'interrogation.

Un analyseur fonctionne dans une séquence:

  • CharFilters (zéro ou plus)
  • Tokenizer (One)
  • TokenFilters (zéro ou plus)

L'analyseur peut être appliqué aux mappages de sorte que, lorsque les champs sont indexés, ils soient effectués sur une base individuelle plutôt que sur la chaîne dans son ensemble. Lors de l'interrogation, la chaîne d'entrée sera également exécutée via l'analyseur. Par conséquent, si vous normalisez le texte dans l'analyseur, il correspondra toujours même si la requête contient une chaîne non normalisée.

Cartographie

Un analyseur peut être appliqué à un mappage en utilisant "analyseur", par défaut l'analyseur "standard" est utilisé. Alternativement, si vous ne souhaitez pas utiliser d’analyseur (parce que la segmentation ou la normalisation ne serait pas utile), vous pouvez spécifier "index": "not_analyzed"

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer":  "my_user_name_analyzer"
        },
        "id": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

Multi-champs

Parfois, il peut être utile d'avoir plusieurs index distincts d'un champ avec différents analyseurs. Vous pouvez utiliser la fonctionnalité multi-champs pour le faire.

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer": "standard",
          "fields": {
            "special": {
               "type": "string",
               "analyzer": "my_user_name_analyzer"
            },
            "unanalyzed": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}

Lors de l'interrogation, au lieu d'utiliser simplement "user.name" (qui dans ce cas utiliserait toujours le standard Analyzer), vous pouvez utiliser "user.name.special" ou "user.name.unanalyzed". Notez que le document restera inchangé, cela ne concerne que l'indexation.

Analyseurs

L'analyse dans elasticsearch entre en contexte lorsque vous souhaitez analyser les données de votre index.

Les analyseurs nous permettent d'effectuer les opérations suivantes:

  • Abréviations
  • Enracinement
  • Manipulation de typo

Nous allons regarder chacun d'eux maintenant.

  1. Abréviations :

    En utilisant des analyseurs, nous pouvons dire à elasticsearch comment traiter les abréviations dans nos données, c'est-à-dire dr => Doctor.

  1. Stemming :

    L’utilisation des méthodes d’analyse nous permet d’utiliser des mots de base pour des verbes modifiés comme

    Mot Modifications
    exiger exigence requise
  1. Typo Handling :

    Les analyseurs fournissent également une gestion des fautes de frappe en interrogeant si nous recherchons des mots particuliers, disons «résurrection», alors elasticsearch retournera les résultats dans lesquels les fautes de frappe sont présentes.

    Mot Modifications
    résurrection la résurrection, la résurrection

Analyseurs dans Elasticsearch

  1. la norme

  2. Simple

  3. Espace blanc

  4. Arrêtez

  5. Mot-clé

  6. Modèle

  7. La langue

  8. Boule de neige

Ignorer l'analyseur de cas

Parfois, il peut être nécessaire d'ignorer la casse de notre requête par rapport à la correspondance dans le document. Un analyseur peut être utilisé dans ce cas pour ignorer le cas lors de la recherche. Chaque champ devra contenir cet analyseur dans sa propriété pour pouvoir fonctionner:

"settings": {
        "analysis": {
            "analyzer": {
                "case_insensitive": {
               "tokenizer": "keyword",
               "filter": ["lowercase"]
            }
            }
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow