Elasticsearch - Analiz

Bir arama işlemi sırasında bir sorgu işlendiğinde, herhangi bir dizindeki içerik analiz modülü tarafından analiz edilir. Bu modül, analizör, jetonlaştırıcı, jeton filtreleri ve karakter filtrelerinden oluşur. Hiçbir analizör tanımlanmamışsa, varsayılan olarak yerleşik analizörler, belirteçler, filtreler ve belirteçler analiz modülüne kaydedilir.

Aşağıdaki örnekte, başka bir analizör belirtilmediğinde kullanılan standart bir analizör kullanıyoruz. Cümleyi dilbilgisine göre analiz edecek ve cümlede kullanılan kelimeleri üretecektir.

POST _analyze
{
   "analyzer": "standard",
   "text": "Today's weather is beautiful"
}

Yukarıdaki kodu çalıştırırken, yanıtı aşağıda gösterildiği gibi alıyoruz -

{
   "tokens" : [
      {
         "token" : "today's",
         "start_offset" : 0,
         "end_offset" : 7,
         "type" : "",
         "position" : 0
      },
      {
         "token" : "weather",
         "start_offset" : 8,
         "end_offset" : 15,
         "type" : "",
         "position" : 1
      },
      {
         "token" : "is",
         "start_offset" : 16,
         "end_offset" : 18,
         "type" : "",
         "position" : 2
      },
      {
         "token" : "beautiful",
         "start_offset" : 19,
         "end_offset" : 28,
         "type" : "",
         "position" : 3
      }
   ]
}

Standart analizörün yapılandırılması

Özel gereksinimlerimizi elde etmek için standart analizörü çeşitli parametrelerle yapılandırabiliriz.

Aşağıdaki örnekte, standart analizörü max_token_length 5 olacak şekilde yapılandırıyoruz.

Bunun için önce max_length_token parametresine sahip analizör ile bir indeks oluşturuyoruz.

PUT index_4_analysis
{
   "settings": {
      "analysis": {
         "analyzer": {
            "my_english_analyzer": {
               "type": "standard",
               "max_token_length": 5,
               "stopwords": "_english_"
            }
         }
      }
   }
}

Daha sonra analizörü aşağıda gösterildiği gibi bir metinle uygularız. Başında iki boşluk ve sonunda iki boşluk olduğu için jetonun nasıl görünmediğine lütfen dikkat edin. "Var" kelimesi için, başında bir boşluk ve sonunda bir boşluk vardır. Hepsini alarak boşluklu 4 harf olur ve bu onu bir kelime yapmaz. Sayılacak bir kelime olması için en azından başında veya sonunda boşluksuz bir karakter bulunmalıdır.

POST index_4_analysis/_analyze
{
   "analyzer": "my_english_analyzer",
   "text": "Today's weather is beautiful"
}

Yukarıdaki kodu çalıştırırken, yanıtı aşağıda gösterildiği gibi alıyoruz -

{
   "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
      }
   ]
}

Çeşitli analizörlerin listesi ve açıklamaları aşağıda gösterilen tabloda verilmiştir -

S.No Analizör ve Açıklama
1

Standard analyzer (standard)

bu analizör için durdurma kelimeleri ve maks_token_uzunluğu ayarı ayarlanabilir. Varsayılan olarak, engellenecek kelimeler listesi boştur ve max_token_length 255'tir.

2

Simple analyzer (simple)

Bu analizör, küçük harfli belirteçten oluşur.

3

Whitespace analyzer (whitespace)

Bu analizör, beyaz boşluk belirtecinden oluşur.

4

Stop analyzer (stop)

stopwords ve stopwords_path yapılandırılabilir. Varsayılan olarak engellenecek sözcükler İngilizce durdurma sözcükleriyle başlatılır ve durdurma sözcükleri_path, durdurma sözcükleriyle bir metin dosyasına giden yolu içerir.

Tokenizatörler

Tokenlaştırıcılar, Elasticsearch'teki bir metinden jeton oluşturmak için kullanılır. Metin, boşluklar veya diğer noktalama işaretleri dikkate alınarak jetonlara bölünebilir. Elasticsearch, özel analizörde kullanılabilecek çok sayıda yerleşik jetonlaştırıcıya sahiptir.

Metni harf olmayan bir karakterle karşılaştığında terimlere bölen, ancak aynı zamanda tüm terimleri de küçük harflerle kullanan bir simge oluşturucu örneği aşağıda gösterilmiştir -

POST _analyze
{
   "tokenizer": "lowercase",
   "text": "It Was a Beautiful Weather 5 Days ago."
}

Yukarıdaki kodu çalıştırırken, yanıtı aşağıda gösterildiği gibi alıyoruz -

{
   "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
      }
   ]
}

Tokenizatörlerin bir listesi ve açıklamaları aşağıda verilen tabloda gösterilmektedir -

S.No Tokenizatör ve Açıklama
1

Standard tokenizer (standard)

Bu, dilbilgisi tabanlı belirteç üzerinde oluşturulmuştur ve bu belirteç için max_token_length yapılandırılabilir.

2

Edge NGram tokenizer (edgeNGram)

Bu tokenizatör için min_gram, max_gram, token_chars gibi ayarlar ayarlanabilir.

3

Keyword tokenizer (keyword)

Bu, tüm girdiyi bir çıktı olarak üretir ve bunun için buffer_size ayarlanabilir.

4

Letter tokenizer (letter)

Bu, harf olmayan biriyle karşılaşılana kadar tüm kelimeyi yakalar.