본문 바로가기

전체 글103

백준 1439 뒤집기 접근 방법은 다음과 같습니다. 예를들어 0100110101 이라면 1과 0이 뭉쳐있는 부분을 뒤집어야 숫자를 최소한으로 동일하게 만들수 있습니다. 경우에수는 0과 1만 있기 때문에 반복문으로 0과 1이 차지하고 있는 부분을 탐색합니다. 여기서 탐색 방법은 찾고자 하는 target수(변수 i)를 만나면 넘어갑니다. 그러다가 숫자가 변하는 부분이 있으면 그부분은 target수와 반대되는 숫자이며 target수의 영역이 끝나는 부분을 의미합니다. 0과 1모두 같은 방식으로 탐색을 하다가 경계라는 것이 string의 끝도 있기 때문에 각 target수가 끝인지 아닌지 여부까지 탐색을 해주면 영역의 개수를 구할 수 있고 더 작은 영역의 개수를 출력해주면 문제가 풀립니다. 근데 다른분들 풀이보니까 나만 너무 무식하.. 2020. 9. 8.
Elasticsearch를 이용한 문서 유사도 검색과 Springboot를 통한 구현 (1) 문서 유사도? 기본적으로 문서가 얼마나 유사하는가에 대한 계산은 Cosine 유사도로 판단하게 된다. 그 이전에 사용하는 개념이 tf-idf인데 그 설명은 위키피디아에 다음과 같이 설명되어 있다. TF-IDF(Term Frequency - Inverse Document Frequency)는 정보 검색과 텍스트 마이닝에서 이용하는 가중치로, 여러 문서로 이루어진 문서군이 있을 때 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치이다. 문서의 핵심어를 추출하거나, 검색 엔진에서 검색 결과의 순위를 결정하거나, 문서들 사이의 비슷한 정도를 구하는 등의 용도로 사용할 수 있다. TF(단어 빈도, term frequency)는 특정한 단어가 문서 내에 얼마나 자주 등장하는지를 나타내는 값.. 2020. 9. 5.
logstash deactivating (stop-sigterm) 해결방법 프로젝트를 하려고 Mysql과 Elasticsearch를 연동해주기 위해 logstash를 이용해서 pipeline을 만드려 주려고 하는 와중에 logstash의 config 파일을 고칠일이 생겨서 고치고 재시작을 했다. 그런데 systemd를 이용해서 restart를 했는데 웬걸..그대로 멈추고 logstash가 실행이 안되는 것이었다.. 그래서 status를 확인해보니.. deactivating(stop-sigterm)이라고 되어있는것이었다.. 역시 이럴때는 구글링이 최고여서 이것저것 많이 찾아봤는데 다행히 해결방법을 찾았다.(원인은 모르겠는데..) 해결 방법은 굉장히 간단했는데 이 부분에 보면 PID가 나와있는데 이 부분을 직접 kill 명령어를 이용해서 직접 프로세스를 종료해주면 해결이 된다. 고.. 2020. 9. 4.
elasticsearch java high level rest client에서 analyze 사용 High Level Rest Client JAVA에서 elasticsearch를 사용하기 위한 것으로 index를 생성,삭제 등의 기능을 지원하며 이것을 통해서 쿼리를 따로 작성하지 않고 간단하게 기능을 구현할 수 있다. 기본적인 레퍼런스는 아래 링크에 잘 설명되어 있지만 아무래도 영어다보니 의사소통이 잘 안될수 있어서 올린다. 참고로 High Level Rest Client가 아닌 Low Level Rest Client를 사용한다면 더 복잡한 쿼리를 직접 작성할 수 있다. https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html [ Java High Level REST Client | Java RE.. 2020. 8. 5.