2016-09-01 2 views
0

文字数に基づいて文字列を小さな部分に分割するためのマッピングアナライザを作成することは可能ですか?弾性検索で文字列を分割するためのマッピングアナライザ

たとえば、文字列「ABCD1E2F34」があるとします。これは、複数の小さなコードから構築されたトークンであり、私はそれらのコードに再度分解したい。

私がいることを確かに知っている場合: - 第二には、3つの文字( "1E2") です - - 第三には、1つの文字( "F") である - 第四には、まずコードは常に4つの文字( "ABCD") です2文字( "34")

このような文字列をマッピングするフィールドのマッピングアナライザを作成できますか?私は「ABCD1E2F34」値を持つフィールド「bigCode」を設定した場合、私はこのようにそれをアクセスすることができます:

bigCode.full ("ABCD1E2F34") 
bigCode.first ("ABCD") 
bigCode.second ("1E2") 
... 

どうもありがとう!

答えて

0

Pattern tokenizerについてどう思いますか?文字列をトークンに分割する正規表現を作成します((?<=(^\\w{4}))|(?<=^\\w{4}(\\w{3}))|(?<=^\\w{4}\\w{3}(\\w{1}))|(?<=^\\w{4}\\w{3}\\w{1}(\\w{2})))。その後私はそのようなアナライザ作成:

PUT /myindex 
{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
      "codeanalyzer": { 
       "type": "pattern", 
       "pattern":"(?<=(^\\w{4}))|(?<=^\\w{4}(\\w{3}))|(?<=^\\w{4}\\w{3}(\\w{1}))|(?<=^\\w{4}\\w{3}\\w{1}(\\w{2}))" 
      } 
      } 
     } 
    } 
} 

POST /myindex/_analyze?analyzer=codeanalyzer&text=ABCD1E2F34 

を、結果がトークン化されたデータである。

{ 
    "tokens": [ 
    { 
     "token": "abcd", 
     "start_offset": 0, 
     "end_offset": 4, 
     "type": "word", 
     "position": 0 
    }, 
    { 
     "token": "1e2", 
     "start_offset": 4, 
     "end_offset": 7, 
     "type": "word", 
     "position": 1 
    }, 
    { 
     "token": "f", 
     "start_offset": 7, 
     "end_offset": 8, 
     "type": "word", 
     "position": 2 
    }, 
    { 
     "token": "34", 
     "start_offset": 8, 
     "end_offset": 10, 
     "type": "word", 
     "position": 3 
    } 
    ] 
} 

また、ドキュメントをチェックすることができます:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-tokenizer.html

関連する問題