오늘은 여러모로 재밌었다.
내가 작업한 주소 검색엔진(ES)가 프로덕션에 올라가는게 확정됐다.
이것저것 정규식을 다 때려박고 예상할 수 있는 예외처리를 모조리 다 해버렸더니
정확도를 99%까지 끌어 올릴 수 있었다.
그래서 1%의 미스는 기존에 사용하던 외부 API로 검증을 하고
99%를 ES를 이용해서 검증하기로 확정이 났다.
근데 내가 지금 7.17.0 버전을 쓰고 있는데 8.x 버전으로 쓸 수 있었으면 좋겠다고 이야기가 나와서
일기를 쓰는 무렵 이것저것 작업을 해봤는데 다 틀어지는데? (....)
주소는 보통 하이픈이 존재한다. 35-12 < 이런거때문에
근데 ES는 스탠다드 분석기에서는 하이픈을 지운다.
35-12가 35 12가 되는 것인데...... 이래서 주소의 정확도가 낮아지는 문제가 발생했다.
그래서 걍 뒤져봤다. 근데 공식문서가 진짜 최고더라..
그래서 이렇게 꽂아넣으니까 하이픈도 안사라지고 인식을 잘 하게 됐다!
{
"template": "address-*",
"index_patterns": ["address"],
"order": "1",
"settings": {
"refresh_interval": "5s",
"analysis": {
"filter": {
"dont_split_on_numerics": {
"type": "word_delimiter",
"preserve_original": true,
"generate_number_parts": false,
"catenate_numbers": true,
"catenate_words": true
}
},
"analyzer": {
"custom_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": ["dont_split_on_numerics"]
}
}
}
},
"mappings": {
"properties": {
"doro_address": {
"type": "text",
"analyzer": "custom_analyzer",
"fields": {
"keyword": { "type": "keyword" }
}
},
"zibun_address": {
"type": "text",
"analyzer": "custom_analyzer",
"fields": {
"keyword": { "type": "keyword" }
}
},
"zip_code": {
"type": "keyword"
},
"build_name": {
"type": "keyword"
},
"manage_code": {
"type": "keyword"
},
"created_at": { "type": "date" },
"updated_at": { "type": "date" }
}
}
}
어떻게 풀어내면 좋을까 하다가 그냥 로그스태시에서 쳐냈다(...)
filter {
ruby {
code => '
event.set("doro_address",event.get("doro_address").gsub(/\s+\s/," "))
event.set("zibun_address",event.get("zibun_address").gsub(/\s+\s/," "))
'
}
}
서버 코드상에서도 지울 수 있겠지만, 어짜피 데이터를 한번 넣고 상당히 오랫동안 쓸거라서
입력할 때 정리해서 넣으면 되겠다고 생각했다.
그리고 데이터를 넣고 있는데 확실히 속도가 느려졌다.
원래 한시간 반정도 걸리는데 한 두시간 걸릴듯?
주소검증이 제대로 안될 때 공백없이 다 붙여서 해보는건 어떻냐는 제안을 받았다.
그래서 nGram으로 한번 해봤는데, 속도가 무쟈게 안나오더라..
물론 정확도는 높았지만, 속도가 많이 나온다는 것은 여러모로 좋지 않을 것이라 생각해서 제외했다.
회사에서 술을 마셔요?
넵 오늘 점심은 피맥
많이 마시는 것은 아니고, 팀원 중 한분께서 수제맥주를 간혹 가져오셔서 그때 마다 이렇게 한번씩 먹는 편이다.
한달에 한번씩은 백엔드 전원이 모여서 밥을 먹는 회고 & 스터디 시간이 있고
이런 점심의 낮술(?)타임은 한달에 0.5번정도 있나(?)
다음 백엔드 월간 회고때는 와인을 한병씩 가져와서 먹어보자는데...
과일치즈나 좀 사갈까싶다(ㅋㅋ)
수요일 15시는 주간 프로덕션 팀 백엔드 정기 회고날이다.
그 중 이런 이야기를 했다.
코드를 짜는게 즐거워서 퇴근하고서도 취미생활처럼 코드를 치고 있는데
체력적 부담이 조금 온 것 같아서 업무량을 조금 줄여야할 것 같다.
그런데 지금 ES 작업이 예전부터 해보고 싶었던 것이라 지키기 힘들 것 같아서
빠르게 끝내는게 나에게 휴식을 주는 길이 아닐까 생각한다(...)
현재 내가 하고 있는 작업이 좀 많은데 대충 이쯤 된다.
오늘도 주소검증에 정규식에 고통받는 나의 모습을 보면서 이게 바로 스불재라고(ㅠㅠ)
하....휴먼 에러를 코드로 바로잡는다는건 정말 어려운 것 같다
아무튼 조금 느긋하게 해야하는데, 성격이 그렇질 못해가지고 음.... 고민이다
걍 사무실 출근하고 노트북을 회사에 놓고 와버리는게 깔끔할 것 같긴 한데...
모르겠다 뭐가 맞을지 하하
이것저것 해보고싶은게 많은데, 몸의 한계가 온거까진 아니지만 건강이 확실히 좋지 않은 것 같다.
운동을 진짜...^^ 무조건 해야할 것 같고
ES의 세부 보안과정에 관한 정보를 좀 찾아봐야 할 것 같다.
내일은 ES 보안을 제외한 코드작업과 TypeORM 버전업에 대한 어느정도 초안을 그려보면 되겠다 :>