2016-09-01 3 views
0

문자열 카운트를 문자 수를 기준으로 작은 부분으로 나누기위한 매핑 분석기를 만들 수 있습니까?탄성 검색에서 문자열 분할을위한 매핑 분석기

예를 들어, 문자열이 있다고 가정 해 봅시다 : "ABCD1E2F34". 이것은 여러개의 작은 코드들로 구성된 토큰이며 다시 그 코드들로 나누고 싶습니다.

내가 확실히 알고있는 경우가 있음 : - 세 번째 1 개 문자 ("F") 입니다 - - 가 두 번째 3 개 문자이다 ("1E2") - 첫 번째 코드는 항상 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 

을 그리고 결과는 데이터 토큰 화 : https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-tokenizer.html

: 또한 문서를 확인할 수 있습니다

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

관련 문제