입력 텍스트를 고정 길이 n의 부분 문자열로 분해해 token을 생성하는 tokenizer 계열
차이점
문자열을 sliding window 방식으로 잘라 모든 위치의 부분 문자열을 token으로 생성
ex)
min_gram=2, max_gram=3 설정"elastic"
→ el, la, as, st, ti, ic
→ ela, las, ast, sti, tic
{
"settings": {
"analysis": {
"tokenizer": {
"ngram_tokenizer": {
"type": "ngram",
"min_gram": 2,
"max_gram": 3,
"token_chars": ["letter", "digit"]
}
},
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "ngram_tokenizer",
"filter": ["lowercase"]
}
}
}
}
}
장점
단점
min_gram=2, max_gram=4 설정시"elastic"
→ el, ela, elas
{
"settings": {
"analysis": {
"tokenizer": {
"edge_ngram_tokenizer": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 4,
"token_chars": ["letter", "digit"]
}
},
"analyzer": {
"edge_ngram_analyzer": {
"type": "custom",
"tokenizer": "edge_ngram_tokenizer",
"filter": ["lowercase"]
}
}
}
}
}
장점
단점
las)은 매칭되지 않음{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "standard",
"fields": {
"ngram": {
"type": "text",
"analyzer": "ngram_analyzer",
"search_analyzer": "standard"
},
"edge": {
"type": "text",
"analyzer": "edge_ngram_analyzer",
"search_analyzer": "standard"
}
}
}
}
}
}