전체 글
백준 4936 - 섬의개수
결국은 순회하면서 하는 DFS를 했는데 다음번에는 DP 또는 그래프 문제를 좀 많이 풀어 보고 싶다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126import java.util.*; public class Main { public static void main(String[..
엘라스틱 서치 (elasticsearch) fielddata
엘라스틱 서치에서 aggregations를 사용하여 text 필드를 그룹화 하려고 했다. 하지만 이런 오류와 함께 사용이 되질 않았다.12Fielddata is disabled on text fields by default. Set fielddata=true on [your_field_name] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.cs 그래서 엘라스틱 서치 문서를 살펴보던 중 text 필드에 fielddata에 대해 알게 되었다. 대 부분의 필드 들은 기본적으로 자신의 필드가 검색가능하도록 인덱스 처리가 된다. 그러기 위해서..
elasticsearch percolating 쿼리
엘라스틱 서치에서 일반적인 검색 기능은 특정 인덱스에 문서를 저장하고, 쿼리에 매칭되는 문서를 불러오는 방식으로 수행된다. 하지만 percolating 쿼리 방식은 그 반대로 동작한다. 쿼리를 사전에 저장하고, 새로 유입된 문서가 매칭되는 쿼리가 있는지 확인해 매칭되는 쿼리를 반환한다. 업무적으로 필요한 기능이어서 알아보던 중 알게되어서 정리해본다. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-percolate-query.html 인덱스 생성아래 인덱스생성에 보면 두 가지 필드를 볼 수있다. 먼저 message 필드는 percolator에서 정의된 문서를 임시 인덱스로 인덱싱하기 전에 사전 처리하는 데 사용되는 필드이..
elasticsearch 몇가지 간단 정리
엘라시틱 서치 간단정리 ※score 계산 알고리즘- tf-idf와 bm25 사용 (엘라스틱 서치 5.0 부터는 bm25로 사용한다고 한다.) https://www.popit.kr/bm25-elasticsearch-5-0%EC%97%90%EC%84%9C-%EA%B2%80%EC%83%89%ED%95%98%EB%8A%94-%EC%83%88%EB%A1%9C%EC%9A%B4-%EB%B0%A9%EB%B2%95/ ※최소 만족해야하는 score 지정 min_score검색된 데이터중에서 score가 6이상인 문서만 추출 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-min-score.html123456789101112GET /..
elasticsearch session timeout 이슈
node.js에서 엘라스틱서치 클라이언트 사용시에 반복되는 요청이나 오랜 시간이 필요한 요청이 있을때 session이 끊어져 버리고 socket hang up 이슈가 발생한다. ※해결방법 session timeout과 keepalive 옵션을 지정해주면 된다. 아래 내용을 보고 참고하여 설정하시길.
Elasticsearch 한글 형태소 설치 및 사용
Elasticsearch 검색시에 한글 형태소를 사용하지 않으면 term을 단순하게 공백을 이용해서 쪼갠다. 하지만 한글말에는 조사도 구분해야하고 품사도 구분해서 사용해야 정확한 검색을 지원할 수 있다. 한글 형태소 플러그인은 크게 arirang, seunjeon, open korea text가 존재한다. 3개의 성능 비교와 자세한 설명은 엘라스틱 서치 블로그에서 참고하면 된다.https://www.elastic.co/kr/blog/using-korean-analyzers open korea text 설치3가지 플러그인중에 open korea text를 사용해서 기능을 테스트해보자. 우선 docker를 사용중이므로 elasticsearch 내부 bash shell로 접속한 후 elasticsearch-p..
elasticsearch multi type 기능 제거 이슈
elasticsearch는 인덱스 하나의 여러 type을 제공했다. 예를 들면 twitter라는 인덱스에 user와 tweet 두개의 타입을 가질 수도 있고 그 안에 Document들이 저장된다. 각각의 타입에 들어있는 properties에는 서로 다른 타입의 것과 독립적으로 보이기 때문에 각 타입에 같은 이름의 properties를 사용할 수 있다. 예를 들면 user type 필드에도 user_name을 만들고, tweet 필드에도 user_name을 만들 수있다. 그리고 각 type에 들어있는 document에는 _id 속성이 있는데 이는 각 타입별로 만들어지기 때문에 서로 다른 타입에 _id는 같은 값을 가질 수도 있다. 위의 내용까지는 얼추 알던내용인데 왜 7.0부터는 이 편한 multi typ..
node.js 애플리케이션 프로세스 관리 도구 매니저
PM2는 built-in 되어있는 Load Balancer와 함께 node.js 애플리케이션의 runtime and process 관리 기능을 제공해 주는 라이브러리이다. PM2를 이용하여 application이 죽지 않고 돌아갈 수있게 watch 기능을 제공해주는 기능도 제공한다. 그리고 error.log, info.log, 자원 점유 등등 여러 기능을 제공해준다. 간단하게 설치부터 사용법에 대해 정리해보자. 설치 $ npm install pm2 -g 실행방법 $ pm2 start app.js 사용법은 아주 간단하다. 위와 같이 command로 프로그램을 실행할 때 여러 옵션도 줄 수 있다. 12// wedul_app.js 를 max_space_size를 500으로 지정하고 실행하라.pm2 start ..
간단한 카카오 챗봇 만들기
node.js 공부한 것으로 한번 테스트 해보기 위해서 카카오 플러스친구를 만들고 그곳에서 호출하는 api를 만들어 연동해봤다. 일부러 wedul 플러스 친구 정보와 친구추가를한 사용자들에 정보를 담을 데이터는 redis에 넣어봤다. 플러스친구 만들기우선 카카오 플러스친구에 들어가서 플러스친구를 만들었다. 플러스 친구에 wedul이라고 검색하면 이제 나온다. 신기하다.친구 추가 url : http://pf.kakao.com/_qMxnEj 이제 친구 추가후에 채팅창에서 보여줄 안내 대화를 만들기 위해 api를 만들었다. api 만들 때 필요한 상세 내용들은 문서에 잘 나와있다. 아주 간단해서 10분이면 다 만들듯??? 그렇게 만든 api를 aws 프론티어에 올려서 카카오 플러스친구에 연동했다. Develo..
request-promise를 통해 가져온 euc-kr 문자열 인코딩 문제 해결 (iconv)
크롤러를 만들기위해 필요로하는 페이지를 가지고 오기위해 request-promise를 사용하였다. 요새 대부분의 홈페이지는 utf-8을 사용하기 때문에 큰 문제가 없으나 euc-kr를 사용하는 옛날 사이트들이 있다. 그런 사이트들의 정보를 그냥 request해서 가지고 오게되면 한글이 다 깨져버린다. 그것을 해결해보자. 우선 request-promise를 사용하여 데이터를 가지고 와보자.12345678const request = require('request-promise'); class Crawler { async crawler() { let doc = await reqest('http://url'); }}Colored by Color Scriptercs 역시 euc-kr를 사용하는 것을 확인하고 있고..