web.php5.sk

Elasticsearch mapping V

23. apríl 2020 / Čamo

V tomto texte sa pozriem čo je to normalizery. 

Normalizery

Normalyzery su podobné analyzerom ale vždy vytvárajú iba jeden token. Z toho vyplýva, že v nich nemôžete definovať tokenizer ale akceptuje iba character filter a token filter. A povolené sú iba filtre ktoré pracujú na znakovej báze. Napr. môžme použiť lowercase filter ale nie stemming filter, ktorý pracuje s tokenom ako s celkom. Tu je zoznam filtrov ktoré sú podporované v normalizeroch: arabic_normalization, acsiifolding, bengali_normalization, cjk_width, decimal_digit, elision, german_normalization, hindi_normalization, lowercase, persian_normalization, scandinavian_normalization, serbian_norrmalization, sorani_normalization, uppercase. 

Custom normalizery

Elasticsearch 6.8 nemá preddefinované normalizery takže je nutné si nadefinovať pri mappingu vlastné. Custom normalizer pozostáva zo zoznamu character filters a token filters.

PUT index
{
  "settings": {
    "analysis": {
      "char_filter": {
        "quote": {
          "type": "mapping",
          "mappings": [
            "« => \"",
            "» => \""
          ]
        }
      },
      "normalizer": {
        "my_normalizer": {
          "type": "custom",
          "char_filter": ["quote"],
          "filter": ["lowercase", "asciifolding"]
        }
      }
    }
  },
  "mappings": {
    "_doc": {
      "properties": {
        "foo": {
          "type": "keyword",
          "normalizer": "my_normalizer"
        }
      }
    }
  }
}
Ak chcete pridávať komentáre musíte sa prihlásiť