2016-09-22 5 views
0

토큰을 특수 문자로 분리하고 색인을 생성하기 전에 대문자로 변환하는 사용자 지정 분석기를 작성하려고합니다. 검색 할 때 결과를 가져올 수 있어야합니다. 또한 소문자 ..특수 문자 및 소문자/대문자로 토큰을 구분하는 사용자 정의 분석기

I 데이터 @ 소스를 제공하고있는 경우 - 예를 들어,이 공백을 @ 교체해야합니다 - 특수 문자가 공백으로 대체 나 데이터 소스와 같은 결과를 제공해야합니다. 여기

내가 구현하려고하는 방법이다.

PUT sound 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "my_analyzer": { 
      "tokenizer": "standard", 
      "char_filter": [ 
      "my_char_filter" 
      ], 
      "filter": [ 
      "uppercase" 
      ] 
     } 
     }, 
     "char_filter": { 
     "my_char_filter": { 
      "type": "pattern_replace", 
      "pattern": "(\\d+)-(?=\\d)", 
      "replacement": "$1 " 
     } 
     } 
    } 
    } 
} 


POST sound/_analyze 
{ 
    "analyzer": "my_analyzer", 
    "text": "data-source&abc" 
} 

그것은처럼 잘 토큰을 분할 -

{ 
    "tokens": [ 
     { 
     "token": "DATA", 
     "start_offset": 0, 
     "end_offset": 4, 
     "type": "<ALPHANUM>", 
     "position": 0 
     }, 
     { 
     "token": "SOURCE", 
     "start_offset": 5, 
     "end_offset": 11, 
     "type": "<ALPHANUM>", 
     "position": 1 
     }, 
     { 
     "token": "ABC", 
     "start_offset": 12, 
     "end_offset": 15, 
     "type": "<ALPHANUM>", 
     "position": 2 
     } 
    ] 
} 

하지만이에 소문자 또는 대문자로 검색 할 경우, 그것은 같은 .. 작동하지 않습니다 :

GET sound/_search?text="data" 

GET sound/_search?text="data" 

GET /sound/_search 
{ 
    "query": { 
    "match": { 
     "text": "data" 
    } 
    } 
} 

그것을 나는 위의 쿼리처럼 검색하면 .. 나에게

+1

에이 대답을 참조하십시오. http://stackoverflow.com/a/ 39662994/4604579 – Val

답변

0

을 결과를 제공하지 않습니다 당신은 몇 가지 약간 다른 구문을 사용합니다 귀하의 검색 :

GET sound/_search?q=data 

GET sound/_search?q=data 

POST sound/_search 
{ 
    "query": { 
    "match": { 
     "NAME_OF_YOUR_FIELD": "data" 
    } 
    } 
} 

NAME_OF_YOUR_FIELD 필요는 당신이 당신의 데이터를 저장하는 필드의 이름에 더 많은 INFOR match query here

+0

안녕 천장 피쉬 - 아직 나를 위해 작동하지 않습니다! 나는 당신이 준 옵션들로도 노력했다. –

+0

/Downloads/elasticsearch-2.4.0/bin$ 컬 -XGET에 http : // localhost를 : 9200/사운드/_search Q = { "했다" '텍스트': 8, "TIMED_OUT"거짓 "_ 파편" { "총"5 "성공": 5, "실패": 0}, "히트": { "총": 0, "MAX_SCORE"널 (null) "히트": []}} 내가 할 수 없습니다입니다 GET으로 결과를 검색하십시오. –

+0

컬 -XGET 'HTTP는 : // localhost를 : 9200/사운드/_search 꽤'- 심지어이 나던 작업처럼 보인다. –