저번 글에서 한번 설명을 했지만, 은전한닢에서 사용자 사전은
settings.index.analysis.tokenizer.seunjeon.user_words
이다.
하지만, 이 설정은 한번 정해두면 변경이 불가능 하기에
변경이 필요하면 새로운 인덱스를 만들어서 거기에 데이터를 밀어넣고
alias를 이용해 변경해야 한다는 것도 언급했었다.
여기에 등록해두면 원래 '명사' 가 아니었던 것도 '명사' 로 인식하게 된다.
원래 존재하는 형용사 등도 등록하면 '명사'로 인식한다.
이건 조금 어려운데, 은전한닢에서는 동의어 사전 기능을 제공하지 않기에 따로 filter를 만들어야 한다.
settings.index.analysis.filter
를 등록해야 한다.
예시는 아래와 같다.
{
"filter": {
"synonym": {
"type": "synonym",
"synonyms": [
"루이비똥,루이 비통=>루이비통"
]
}
}
}
그리고 이걸
settings.index.analysis.analyzer.korean.filter
에 넣고 쓰면 된다.
{
"analyzer": {
"korean": {
"type": "custom",
"tokenizer": "seunjeon",
"filter": ["synonym"]
}
}
}
synonyms
에 등록된 "루이비똥,루이 비통=>루이비통"
에 대해
'루비비똥, 루이 비통' 이 두 단어를 검색하면 자동으로 '루이비통' 으로 바꿔서 검색해준다.
PUT /brands_v1.0.0
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"korean": {
"type": "custom",
"tokenizer": "seunjeon",
"filter": ["synonym"]
}
},
"tokenizer": {
"seunjeon": {
"user_words": ["루이비통"],
"index_eojeol": "true",
"index_poses": ["UNK","EP","I","J","M","N","SL","SH","SN","VCP","XP","XS","XR"],
"decompound": "true",
"type": "seunjeon_tokenizer"
}
},
"filter": {
"synonym": {
"type": "synonym",
"synonyms": [
"루이비똥,루이 비통=>루이비통"
]
}
}
}
}
},
"mappings": {
"properties": {
"id": { "type": "integer" }
"name": { "type": "text", "analyzer": "korean" }
}
}
}
사용자 사전이나 동의어 사전의 단어가 늘어날 때 마다 PUT 요청으로 계속 늘리다보면 어느 순간에는 REST 요청으로 보낼 수 있는 길이의 한계에 부딪히게 될 것이다.
그래서 파일로 만들어서 등록해 둘 필요가 있다.
은전한닢에서 사용자 사전은
settings.index.analysis.tokenizer.seunjeon.user_dict_path
이다.
{
"tokenizer": {
"seunjeon": {
"user_dict_path": "analyzers/F200000000",
"index_eojeol": "true",
"index_poses": ["UNK","EP","I","J","M","N","SL","SH","SN","VCP","XP","XS","XR"],
"decompound": "true",
"type": "seunjeon_tokenizer"
}
}
}
그리고 동의어 사전은 은전한닢이 아닌 엘라스틱서치 설정을 따라가므로
settings.index.analysis.filter.{filter_name}.synonyms_path
이다.
{
"filter": {
"synonym": {
"type": "synonym",
"synonyms_path": "analyzers/F200000000"
}
}
}
단어는 개행으로 구분한다.
따옴표나 쌍따옴표로 감쌀 필요는 없다.
사용자 사전과 비슷한데 아래 예시를 보면 감이 올 것이다.
루이비똥,루이 비통=>루이비통
캐구=>캐나다 구스
골구=>골든 구스
이런 식으로 작성하면 된다.
https://docs.aws.amazon.com/ko_kr/elasticsearch-service/latest/developerguide/custom-packages.html
위 링크는 AWS에서 공식적으로 게시해둔 S3를 이용하여 AWS Elasticsearch에 파일을 연결하는 방법이다.