lenient를 한국말로하면 관대한이라는 뜻이다. 무엇이 관대한지 알아보자.
lenient의 default값은 false이고, true일 경우 관대해져서 동의어 필터를 적용하며 생기는 exception들을 모두 무시한다. 동의어 필터를 적용하며 생기는 문제는 다음과 같다.
curl -X PUT "localhost:9200/test_index" -H 'Content-Type: application/json' -d'
{
"settings": {
"index" : {
"analysis" : {
"analyzer" : {
"synonym" : {
"tokenizer" : "standard",
"filter" : ["my_stop", "synonym"]
}
},
"filter" : {
"my_stop": {
"type" : "stop",
"stopwords": ["bar"]
},
"synonym" : {
"type" : "synonym",
"lenient": true,
"synonyms" : ["foo, bar => baz"]
}
}
}
}
}
}
'
위를 보면 동의어 사전에 "foo, bar => baz"와 같이 등록했지만 "bar"는 stopword이므로 생략되는데 "foo => baz" 형태로 mapping 된다. 그러나 동의어 사전에 등록한 형태가 "foo, baz => bar" 였다면 최종 변화되느 형태인 "bar"가 사라지게 되므로 동의어 filter를 거치고 나면 남는것은 아무것도 없게 된다. 이와 유사하게, "bar, foo, baz" 형태로 동의사전이 저장되어있고 expand=false로 되있으면 아무것도 남지 않는다. 하지만 expand 값이 true라면 "foo, baz => foo, baz"과 같은 매핑 효과를 가지게 된다.
어느정도까지 무시하는지는 추후에 좀 더 테스트 필요
'IT > Elasticsearch' 카테고리의 다른 글
Elastic Search analyse process (analyser + tokeniser + tokenfilter) (0) | 2019.02.09 |
---|---|
logstash error - unrecognized SSL message (0) | 2018.11.12 |
nori, arirang, openkoreantext, mecab 형태소분석기 사전형식 (0) | 2018.11.08 |
ES analyzer 설치하기 (nori webinar) (1/3) (0) | 2018.10.25 |
ES에서 mapping types가 없어지는 이유 (0) | 2018.10.23 |