2016-09-23 15 views
0
curl -XPUT 'http://localhost:9200/testsoundi' -d '{ "settings": { 
    "analysis": { 
    "analyzer": { 
    "my_edge_ngram_analyzer": { 
    "tokenizer": "my_edge_ngram_tokenizer" 
    } 
    }, 
    "tokenizer": { 
    "my_edge_ngram_tokenizer": { 
    "type": "edgeNGram", "min_gram" : "2", "max_gram" : "5", 
    "token_chars": ["letter", "digit","whitespace"] 
    } 
    } 
    } 
    } 
    }' 


[email protected]:~/Downloads/elasticsearch-2.4.0/bin$ curl 'localhost:9200/testsoundi/_analyze?pretty=1&analyzer=my_edge_ngram_analyzer' -d 'wonder' 

하지만, 원 WO 나는 3으로 max_gram을주는 경우에 나는 등, wond을 출력을 얻고, 내가 ('원' '우와') 세 번째 글자까지 만 얻고N- 그램 elasticsearch

I am expecting output like: 

won 
ond 
nde 
der 

아무도 도와 줄 수 있습니까?

답변

1

잘 했어, 거의 다 왔어. 먼저, edgeNGram이 아닌 nGram 토크 나이저가 필요합니다. 차이점은 후자가 단어의 시작 부분부터 토큰 화하는 반면, 전자는 단어 내의 위치와 관계없이 원하는 길이의 모든 가능한 토큰을 생성한다는 점입니다.

두 번째는 길이 3, min_grammax_gram의 토큰이 필요하면하는 것은 '3

curl -XPUT 'http://localhost:9200/testsoundi' -d '{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "my_ngram_analyzer": { 
      "tokenizer": "my_ngram_tokenizer" 
     } 
     }, 
     "tokenizer": { 
     "my_ngram_tokenizer": { 
      "type": "nGram", 
      "min_gram": "3", 
      "max_gram": "3", 
      "token_chars": [ 
      "letter", 
      "digit", 
      "whitespace" 
      ] 
     } 
     } 
    } 
    } 
} 

+0

감사 톤이 필요합니다! 그것은 작동합니다. 완전한. :) –

+0

신난다, 그것이 기뻤다! – Val

+0

Val - 공백으로 특수 문자에 토큰을 분할하고 대문자로 변환하는 분석기를 작성하려고합니다. 그리고 소문자로 검색해도 작동해야합니다. - http://stackoverflow.com/questions/39643533/custom-analyzer-which-breaks-the-tokens-on-special-charecers-and-lowercase-uppe - 도움을 줄 수 있습니까? 가능하다면 .. –