Elasticsearch 6.2で中国語や日本語、韓国語の文字列を検索する - その1: Analyzer | Elastic Blog
エンジニアリング

Elasticsearch 6.2で中国語や日本語、韓国語の文字列を検索する - その1:Analyzer

著者

20189249Elastic34

https://www.elastic.co/guide/en/elasticsearch/guide/current/language-intro.html Analyzer

Standard Analyzer

AnalyzerStandard AnalyzerStandard Analyzer使 https://www.pyeongchang2018.com/ko/about-the-games

POST _analyze
{
  "analyzer": "standard",
  "text": "제23회 동계올림픽대회는 대한민국 강원도 평창에서 2018년 2월 9일부터 25일까지 17일간 개최됩니다. 대한민국 평창은 세 번의 도전 끝에 지난 2011년 7월 6일 열린 제123차 IOC 총회에서 과반 표를 획득하며 2018년 동계올림픽 개최지로 선정되었습니다. 이로써 대한민국에서는 1988년 서울 올림픽 이후 30년 만에, 평창에서 개∙폐회식과 대부분의 설상 경기가 개최되며, 강릉에서는 빙상 종목 전 경기가, 그리고 정선에서는 알파인 스키 활강 경기가 개최될 예정입니다."
}
=>
{
  "tokens": [
    {
      "token": "제23회",
      "start_offset": 0,
      "end_offset": 4,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "&#xB3D9;&#xACC4;&#xC62C;&#xB9BC;&#xD53D;&#xB300;&#xD68C;&#xB294;",
      "start_offset": 5,
      "end_offset": 13,
      "type": "<HANGUL>",
      "position": 1
    },
&#x2026;

Standard Analyzer

POST _analyze
{
  "analyzer": "standard",
  "text": "&#x7B2C;23&#x56DE;&#x51AC;&#x5B63;&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x5927;&#x4F1A;&#x306F;&#x5927;&#x97D3;&#x6C11;&#x56FD;&#x6C5F;&#x539F;&#x9053;&#x5E73;&#x660C;&#x3067;2018&#x5E74;2&#x6708;9&#x65E5;&#x304B;&#x3089;25&#x65E5;&#x307E;&#x3067;&#x306E;17&#x65E5;&#x9593;&#x3001;&#x958B;&#x50AC;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002;&#x5927;&#x97D3;&#x6C11;&#x56FD;&#x30FB;&#x5E73;&#x660C;&#x306F;&#x4E09;&#x5EA6;&#x306E;&#x6311;&#x6226;&#x306E;&#x672B;&#x3001;2011&#x5E74;7&#x6708;7&#x65E5;&#x306B;&#x958B;&#x304B;&#x308C;&#x305F;&#x7B2C;123&#x56DE;IOC&#x7DCF;&#x4F1A;&#x3067;&#x904E;&#x534A;&#x6570;&#x7968;&#x3092;&#x7372;&#x5F97;&#x3057;&#x3001;2018&#x5E74;&#x51AC;&#x5B63;&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x53CA;&#x3073;&#x30D1;&#x30E9;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x306E;&#x958B;&#x50AC;&#x5730;&#x306B;&#x9078;&#x3070;&#x308C;&#x307E;&#x3057;&#x305F;&#x3002;&#x3053;&#x308C;&#x306B;&#x3088;&#x308A;1988&#x5E74;&#x30BD;&#x30A6;&#x30EB;&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x958B;&#x50AC;&#x5F8C;30&#x5E74;&#x306E;&#x6642;&#x3092;&#x7D4C;&#x3066;&#x3064;&#x3044;&#x306B;&#x3001;&#x5927;&#x97D3;&#x6C11;&#x56FD;&#x3067;&#x6700;&#x521D;&#x306E;&#x51AC;&#x5B63;&#x30D1;&#x30E9;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x306E;&#x821E;&#x53F0;&#x304C;&#x7E70;&#x308A;&#x5E83;&#x3052;&#x3089;&#x308C;&#x307E;&#x3059;&#x3002;&#x5E73;&#x660C;&#x3067;&#x958B;&#x30FB;&#x9589;&#x4F1A;&#x5F0F;&#x3068;&#x307B;&#x307C;&#x5168;&#x3066;&#x306E;&#x96EA;&#x4E0A;&#x7AF6;&#x6280;&#x304C;&#x958B;&#x50AC;&#x3055;&#x308C;&#x3001;&#x6C5F;&#x9675;&#x3067;&#x306F;&#x6C37;&#x4E0A;&#x7A2E;&#x76EE;&#x5168;&#x7AF6;&#x6280;&#x304C;&#x3001;&#x305D;&#x3057;&#x3066;&#x65CC;&#x5584;&#x3067;&#x306F;&#x30A2;&#x30EB;&#x30DA;&#x30F3;&#x30B9;&#x30AD;&#x30FC;&#x6ED1;&#x964D;&#x7AF6;&#x6280;&#x304C;&#x958B;&#x50AC;&#x3055;&#x308C;&#x308B;&#x4E88;&#x5B9A;&#x3067;&#x3059;&#x3002;"
}
=>
{
  "tokens": [
    {
      "token": "&#x7B2C;",
      "start_offset": 0,
      "end_offset": 1,
      "type": "<IDEOGRAPHIC>",
      "position": 0
    },
    {
      "token": "23",
      "start_offset": 1,
      "end_offset": 3,
      "type": "<NUM>",
      "position": 1
    },
    {
      "token": "&#x56DE;",
      "start_offset": 3,
      "end_offset": 4,
      "type": "<IDEOGRAPHIC>",
      "position": 2
    },
    {
      "token": "&#x51AC;",
      "start_offset": 4,
      "end_offset": 5,
      "type": "<IDEOGRAPHIC>",
      "position": 3
    },
    {
      "token": "&#x5B63;",
      "start_offset": 5,
      "end_offset": 6,
      "type": "<IDEOGRAPHIC>",
      "position": 4
    },
    {
      "token": "&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;",
      "start_offset": 6,
      "end_offset": 12,
      "type": "<KATAKANA>",
      "position": 5
    },
    {
      "token": "&#x5927;",
      "start_offset": 12,
      "end_offset": 13,
      "type": "<IDEOGRAPHIC>",
      "position": 6
    },
    {
      "token": "&#x4F1A;",
      "start_offset": 13,
      "end_offset": 14,
      "type": "<IDEOGRAPHIC>",
      "position": 7
    },
    {
      "token": "&#x306F;",
      "start_offset": 14,
      "end_offset": 15,
      "type": "<HIRAGANA>",
      "position": 8
    },
&#x2026;

Standard AnalyzerStandard Analyzer11token

POST _analyze
{
  "analyzer": "standard",
  "text": "&#x7B2C;23&#x5C4A;&#x51AC;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x5C06;&#x4E8E;2018&#x5E74;2&#x6708;9&#x65E5;-25&#x65E5;&#x5728;&#x97E9;&#x56FD;&#x6C5F;&#x539F;&#x9053;&#x5E73;&#x660C;&#x5C55;&#x5F00;&#x3002;&#x97E9;&#x56FD;&#x5E73;&#x660C;&#x5728;&#x7B2C;&#x4E09;&#x6B21;&#x7533;&#x5965;&#x4E4B;&#x540E;&#xFF0C;&#x4E8E;2011&#x5E74;7&#x6708;6&#x65E5;&#x53EC;&#x5F00;&#x7684;&#x7B2C;123&#x5C4A;&#x56FD;&#x9645;&#x5965;&#x59D4;&#x4F1A;&#x5168;&#x4F1A;&#x4E0A;&#x88AB;&#x9009;&#x5B9A;&#x4E3A;2018&#x5E74;&#x51AC;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x7684;&#x4E3B;&#x529E;&#x5730;&#x3002;&#x7531;&#x6B64;&#xFF0C;&#x97E9;&#x56FD;&#x81EA;1988&#x5E74;&#x4E3E;&#x529E;&#x9996;&#x5C14;&#x590F;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x4EE5;&#x540E;&#xFF0C;&#x65F6;&#x9694;30&#x5E74;&#xFF0C;&#x5C06;&#x9996;&#x6B21;&#x4E3E;&#x529E;&#x51AC;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x3002;&#x8BE5;&#x5C4A;&#x51AC;&#x5965;&#x4F1A;&#x7684;&#x5F00;&#xB7;&#x95ED;&#x5E55;&#x5F0F;&#x4EE5;&#x53CA;&#x5927;&#x90E8;&#x5206;&#x7684;&#x96EA;&#x4E0A;&#x8FD0;&#x52A8;&#x5C06;&#x5728;&#x5E73;&#x660C;&#x8FDB;&#x884C;&#xFF0C;&#x800C;&#x6240;&#x6709;&#x51B0;&#x4E0A;&#x8FD0;&#x52A8;&#x5C06;&#x5728;&#x6C5F;&#x9675;&#x3001;&#x9AD8;&#x5C71;&#x6ED1;&#x96EA;&#x6ED1;&#x964D;&#x6BD4;&#x8D5B;&#x5219;&#x5C06;&#x5728;&#x65CC;&#x5584;&#x8FDB;&#x884C;&#x3002;"
}
=>
{
  "tokens": [
    {
      "token": "&#x7B2C;",
      "start_offset": 0,
      "end_offset": 1,
      "type": "<IDEOGRAPHIC>",
      "position": 0
    },
    {
      "token": "23",
      "start_offset": 1,
      "end_offset": 3,
      "type": "<NUM>",
      "position": 1
    },
    {
      "token": "&#x5C4A;",
      "start_offset": 3,
      "end_offset": 4,
      "type": "<IDEOGRAPHIC>",
      "position": 2
    },
    {
      "token": "&#x51AC;",
      "start_offset": 4,
      "end_offset": 5,
      "type": "<IDEOGRAPHIC>",
      "position": 3
    },
    {
      "token": "&#x5B63;",
      "start_offset": 5,
      "end_offset": 6,
      "type": "<IDEOGRAPHIC>",
      "position": 4
    },
    {
      "token": "&#x5965;",
      "start_offset": 6,
      "end_offset": 7,
      "type": "<IDEOGRAPHIC>",
      "position": 5
    },
    {
      "token": "&#x8FD0;",
      "start_offset": 7,
      "end_offset": 8,
      "type": "<IDEOGRAPHIC>",
      "position": 6
    },
    {
      "token": "&#x4F1A;",
      "start_offset": 8,
      "end_offset": 9,
      "type": "<IDEOGRAPHIC>",
      "position": 7
    },
...

Standard Analyzer1

Analyzer

Analyzer使kuromojismartcn openkoreantext-analyzer Analyzer使 Analyzeropenkoreantext-analyzerElasticURL

POST _analyze
{
  "analyzer": "openkoreantext-analyzer",
  "text": "&#xC81C;23&#xD68C; &#xB3D9;&#xACC4;&#xC62C;&#xB9BC;&#xD53D;&#xB300;&#xD68C;&#xB294; &#xB300;&#xD55C;&#xBBFC;&#xAD6D; &#xAC15;&#xC6D0;&#xB3C4; &#xD3C9;&#xCC3D;&#xC5D0;&#xC11C; 2018&#xB144; 2&#xC6D4; 9&#xC77C;&#xBD80;&#xD130; 25&#xC77C;&#xAE4C;&#xC9C0; 17&#xC77C;&#xAC04; &#xAC1C;&#xCD5C;&#xB429;&#xB2C8;&#xB2E4;. &#xB300;&#xD55C;&#xBBFC;&#xAD6D; &#xD3C9;&#xCC3D;&#xC740; &#xC138; &#xBC88;&#xC758; &#xB3C4;&#xC804; &#xB05D;&#xC5D0; &#xC9C0;&#xB09C; 2011&#xB144; 7&#xC6D4; 6&#xC77C; &#xC5F4;&#xB9B0; &#xC81C;123&#xCC28; IOC &#xCD1D;&#xD68C;&#xC5D0;&#xC11C; &#xACFC;&#xBC18; &#xD45C;&#xB97C; &#xD68D;&#xB4DD;&#xD558;&#xBA70; 2018&#xB144; &#xB3D9;&#xACC4;&#xC62C;&#xB9BC;&#xD53D; &#xAC1C;&#xCD5C;&#xC9C0;&#xB85C; &#xC120;&#xC815;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774;&#xB85C;&#xC368; &#xB300;&#xD55C;&#xBBFC;&#xAD6D;&#xC5D0;&#xC11C;&#xB294; 1988&#xB144; &#xC11C;&#xC6B8; &#xC62C;&#xB9BC;&#xD53D; &#xC774;&#xD6C4; 30&#xB144; &#xB9CC;&#xC5D0;, &#xD3C9;&#xCC3D;&#xC5D0;&#xC11C; &#xAC1C;&#x2219;&#xD3D0;&#xD68C;&#xC2DD;&#xACFC; &#xB300;&#xBD80;&#xBD84;&#xC758; &#xC124;&#xC0C1; &#xACBD;&#xAE30;&#xAC00; &#xAC1C;&#xCD5C;&#xB418;&#xBA70;, &#xAC15;&#xB989;&#xC5D0;&#xC11C;&#xB294; &#xBE59;&#xC0C1; &#xC885;&#xBAA9; &#xC804; &#xACBD;&#xAE30;&#xAC00;, &#xADF8;&#xB9AC;&#xACE0; &#xC815;&#xC120;&#xC5D0;&#xC11C;&#xB294; &#xC54C;&#xD30C;&#xC778; &#xC2A4;&#xD0A4; &#xD65C;&#xAC15; &#xACBD;&#xAE30;&#xAC00; &#xAC1C;&#xCD5C;&#xB420; &#xC608;&#xC815;&#xC785;&#xB2C8;&#xB2E4;."
}
=>
{
  "tokens": [
    {
      "token": "&#xC81C;",
      "start_offset": 0,
      "end_offset": 1,
      "type": "Noun",
      "position": 0
    },
    {
      "token": "23&#xD68C;",
      "start_offset": 1,
      "end_offset": 4,
      "type": "Number",
      "position": 1
    },
    {
      "token": "&#xB3D9;&#xACC4;&#xC62C;&#xB9BC;&#xD53D;",
      "start_offset": 5,
      "end_offset": 10,
      "type": "Noun",
      "position": 2
    },
    {
      "token": "&#xB300;&#xD68C;",
      "start_offset": 10,
      "end_offset": 12,
      "type": "Noun",
      "position": 3
    },
...

POST _analyze
{
  "analyzer": "kuromoji",
  "text": "&#x7B2C;23&#x56DE;&#x51AC;&#x5B63;&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x5927;&#x4F1A;&#x306F;&#x5927;&#x97D3;&#x6C11;&#x56FD;&#x6C5F;&#x539F;&#x9053;&#x5E73;&#x660C;&#x3067;2018&#x5E74;2&#x6708;9&#x65E5;&#x304B;&#x3089;25&#x65E5;&#x307E;&#x3067;&#x306E;17&#x65E5;&#x9593;&#x3001;&#x958B;&#x50AC;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002;&#x5927;&#x97D3;&#x6C11;&#x56FD;&#x30FB;&#x5E73;&#x660C;&#x306F;&#x4E09;&#x5EA6;&#x306E;&#x6311;&#x6226;&#x306E;&#x672B;&#x3001;2011&#x5E74;7&#x6708;7&#x65E5;&#x306B;&#x958B;&#x304B;&#x308C;&#x305F;&#x7B2C;123&#x56DE;IOC&#x7DCF;&#x4F1A;&#x3067;&#x904E;&#x534A;&#x6570;&#x7968;&#x3092;&#x7372;&#x5F97;&#x3057;&#x3001;2018&#x5E74;&#x51AC;&#x5B63;&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x53CA;&#x3073;&#x30D1;&#x30E9;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x306E;&#x958B;&#x50AC;&#x5730;&#x306B;&#x9078;&#x3070;&#x308C;&#x307E;&#x3057;&#x305F;&#x3002;&#x3053;&#x308C;&#x306B;&#x3088;&#x308A;1988&#x5E74;&#x30BD;&#x30A6;&#x30EB;&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x958B;&#x50AC;&#x5F8C;30&#x5E74;&#x306E;&#x6642;&#x3092;&#x7D4C;&#x3066;&#x3064;&#x3044;&#x306B;&#x3001;&#x5927;&#x97D3;&#x6C11;&#x56FD;&#x3067;&#x6700;&#x521D;&#x306E;&#x51AC;&#x5B63;&#x30D1;&#x30E9;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;&#x306E;&#x821E;&#x53F0;&#x304C;&#x7E70;&#x308A;&#x5E83;&#x3052;&#x3089;&#x308C;&#x307E;&#x3059;&#x3002;&#x5E73;&#x660C;&#x3067;&#x958B;&#x30FB;&#x9589;&#x4F1A;&#x5F0F;&#x3068;&#x307B;&#x307C;&#x5168;&#x3066;&#x306E;&#x96EA;&#x4E0A;&#x7AF6;&#x6280;&#x304C;&#x958B;&#x50AC;&#x3055;&#x308C;&#x3001;&#x6C5F;&#x9675;&#x3067;&#x306F;&#x6C37;&#x4E0A;&#x7A2E;&#x76EE;&#x5168;&#x7AF6;&#x6280;&#x304C;&#x3001;&#x305D;&#x3057;&#x3066;&#x65CC;&#x5584;&#x3067;&#x306F;&#x30A2;&#x30EB;&#x30DA;&#x30F3;&#x30B9;&#x30AD;&#x30FC;&#x6ED1;&#x964D;&#x7AF6;&#x6280;&#x304C;&#x958B;&#x50AC;&#x3055;&#x308C;&#x308B;&#x4E88;&#x5B9A;&#x3067;&#x3059;&#x3002;"
}
=>
{
  "tokens": [
    {
      "token": "&#x7B2C;",
      "start_offset": 0,
      "end_offset": 1,
      "type": "word",
      "position": 0
    },
    {
      "token": "23",
      "start_offset": 1,
      "end_offset": 3,
      "type": "word",
      "position": 1
    },
    {
      "token": "&#x56DE;",
      "start_offset": 3,
      "end_offset": 4,
      "type": "word",
      "position": 2
    },
    {
      "token": "&#x51AC;&#x5B63;",
      "start_offset": 4,
      "end_offset": 6,
      "type": "word",
      "position": 3
    },
    {
      "token": "&#x30AA;&#x30EA;&#x30F3;&#x30D4;&#x30C3;&#x30AF;",
      "start_offset": 6,
      "end_offset": 12,
      "type": "word",
      "position": 4
    },
    {
      "token": "&#x5927;&#x4F1A;",
      "start_offset": 12,
      "end_offset": 14,
      "type": "word",
      "position": 5
    },
...

POST _analyze
{
  "analyzer": "smartcn",
  "text": "&#x7B2C;23&#x5C4A;&#x51AC;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x5C06;&#x4E8E;2018&#x5E74;2&#x6708;9&#x65E5;-25&#x65E5;&#x5728;&#x97E9;&#x56FD;&#x6C5F;&#x539F;&#x9053;&#x5E73;&#x660C;&#x5C55;&#x5F00;&#x3002;&#x97E9;&#x56FD;&#x5E73;&#x660C;&#x5728;&#x7B2C;&#x4E09;&#x6B21;&#x7533;&#x5965;&#x4E4B;&#x540E;&#xFF0C;&#x4E8E;2011&#x5E74;7&#x6708;6&#x65E5;&#x53EC;&#x5F00;&#x7684;&#x7B2C;123&#x5C4A;&#x56FD;&#x9645;&#x5965;&#x59D4;&#x4F1A;&#x5168;&#x4F1A;&#x4E0A;&#x88AB;&#x9009;&#x5B9A;&#x4E3A;2018&#x5E74;&#x51AC;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x7684;&#x4E3B;&#x529E;&#x5730;&#x3002;&#x7531;&#x6B64;&#xFF0C;&#x97E9;&#x56FD;&#x81EA;1988&#x5E74;&#x4E3E;&#x529E;&#x9996;&#x5C14;&#x590F;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x4EE5;&#x540E;&#xFF0C;&#x65F6;&#x9694;30&#x5E74;&#xFF0C;&#x5C06;&#x9996;&#x6B21;&#x4E3E;&#x529E;&#x51AC;&#x5B63;&#x5965;&#x8FD0;&#x4F1A;&#x3002;&#x8BE5;&#x5C4A;&#x51AC;&#x5965;&#x4F1A;&#x7684;&#x5F00;&#xB7;&#x95ED;&#x5E55;&#x5F0F;&#x4EE5;&#x53CA;&#x5927;&#x90E8;&#x5206;&#x7684;&#x96EA;&#x4E0A;&#x8FD0;&#x52A8;&#x5C06;&#x5728;&#x5E73;&#x660C;&#x8FDB;&#x884C;&#xFF0C;&#x800C;&#x6240;&#x6709;&#x51B0;&#x4E0A;&#x8FD0;&#x52A8;&#x5C06;&#x5728;&#x6C5F;&#x9675;&#x3001;&#x9AD8;&#x5C71;&#x6ED1;&#x96EA;&#x6ED1;&#x964D;&#x6BD4;&#x8D5B;&#x5219;&#x5C06;&#x5728;&#x65CC;&#x5584;&#x8FDB;&#x884C;&#x3002;"
}
=>
{
  "tokens": [
    {
      "token": "&#x7B2C;",
      "start_offset": 0,
      "end_offset": 1,
      "type": "word",
      "position": 0
    },
    {
      "token": "23",
      "start_offset": 1,
      "end_offset": 3,
      "type": "word",
      "position": 1
    },
    {
      "token": "&#x5C4A;",
      "start_offset": 3,
      "end_offset": 4,
      "type": "word",
      "position": 2
    },
    {
      "token": "&#x51AC;&#x5B63;",
      "start_offset": 4,
      "end_offset": 6,
      "type": "word",
      "position": 3
    },
    {
      "token": "&#x5965;&#x8FD0;&#x4F1A;",
      "start_offset": 6,
      "end_offset": 9,
      "type": "word",
      "position": 4
    },
...

Elasticsearch 6.2 - 2