Elasticsearch-analysis

提供:Dev Guides
移動先:案内検索

Elasticsearch-分析

検索操作中にクエリが処理されると、インデックスのコンテンツが分析モジュールによって分析されます。 このモジュールは、アナライザー、トークナイザー、トークンフィルター、および文字フィルターで構成されています。 アナライザーが定義されていない場合、デフォルトでは、組み込みのアナライザー、トークン、フィルター、およびトークナイザーが分析モジュールに登録されます。

次の例では、他のアナライザーが指定されていない場合に使用される標準アナライザーを使用します。 文法に基づいて文を分析し、文で使用される単語を生成します。

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

上記のコードを実行すると、次のように応答が得られます-

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

標準アナライザーの構成

さまざまなパラメーターを使用して標準アナライザーを構成し、カスタム要件を取得できます。

次の例では、max_token_lengthが5になるように標準アナライザーを構成します。

このために、最初にmax_length_tokenパラメーターを持つアナライザーでインデックスを作成します。

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

次に、アナライザーに次のようなテキストを適用します。 トークンの先頭には2つのスペースがあり、末尾には2つのスペースがあるため、トークンは表示されないことに注意してください。 「is」という単語の場合、先頭にスペースがあり、末尾にスペースがあります。 それらすべてを取得すると、スペース付きの4文字になりますが、それは単語になりません。 カウント対象の単語にするために、少なくとも先頭または末尾にスペース以外の文字が必要です。

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

上記のコードを実行すると、次のように応答が得られます-

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

さまざまなアナライザーのリストとその説明は、以下に示す表に記載されています-

S.No Analyzer & Description
1

Standard analyzer (standard)

このアナライザーには、ストップワードとmax_token_length設定を設定できます。 デフォルトでは、ストップワードリストは空で、max_token_lengthは255です。

2

Simple analyzer (simple)

このアナライザーは、小文字のトークナイザーで構成されています。

3

Whitespace analyzer (whitespace)

このアナライザーは、空白トークナイザーで構成されています。

4

Stop analyzer (stop)

stopwordsおよびstopwords_pathを構成できます。 デフォルトでは、ストップワードは英語のストップワードに初期化され、stopwords_pathにはストップワードを含むテキストファイルへのパスが含まれます。

トークナイザー

トークナイザーは、Elasticsearchのテキストからトークンを生成するために使用されます。 テキストは、空白またはその他の句読点を考慮してトークンに分割できます。 Elasticsearchには、カスタムアナライザーで使用できる組み込みのトークナイザーがたくさんあります。

文字ではない文字に出会うたびにテキストを用語に分割するトークナイザーの例は、すべての用語を小文字にします。

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

上記のコードを実行すると、次のように応答が得られます-

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

トークナイザーのリストとその説明は、以下の表に示されています-

S.No Tokenizer & Description
1

Standard tokenizer (standard)

これは、文法ベースのトークナイザーに基づいており、このトークナイザー用にmax_token_lengthを構成できます。

2

Edge NGram tokenizer (edgeNGram)

min_gram、max_gram、token_charsなどの設定をこのトークナイザーに設定できます。

3

Keyword tokenizer (keyword)

これにより、入力全体が出力として生成され、buffer_sizeを設定できます。

4

Letter tokenizer (letter)

これは、文字以外が見つかるまで単語全体をキャプチャします。