데이터 관리/ElasticSearch
Elasticsearch 유사도 알고리즘(similarity) BM25과 TF/IDF
Elasticsearch 유사도 알고리즘(similarity) BM25과 TF/IDF
2020.05.16유사도 검색 - https://12bme.tistory.com/479?category=737765 Elasticsearch 버전 5.0부터는 _score 점수를 계산하는 기본 유사도 측정 알고리즘이 바뀌었다. TF/IDF(classic)에서 BM25로 바뀐 이유는, BM25가 검색의 정확도가 더 정교하다는 판단을 내렸을 것이다. [링크 : 왜 BM25가 더 정확한 지에 대한 내용] 하지만 각자 서비스하는 시스템이 다르기 때문에, 이 두 알고리즘이 어떤 차이가 있는지 알아야 더 적합한 알고리즘을 선택할 수 있을 것이라 생각한다. BM25와 TF/IDF의 차이점은 바로 아래에 써두었다. BM25와 TF/IDF의 차이점 단어의 빈도수 알고리즘 설명 TF/IDF common words can still infl..
Elasticsearch Object타입과 Nested타입
Elasticsearch Object타입과 Nested타입
2020.04.26엘라스틱서치의 필드 데이터 타입인 Object과 Nested을 알아보고, 유사한 두 타입의 차이점을 살펴보자. 인덱스 생성 시 매핑 설정을 정확히 하기 위해서는 필드 타입을 잘 이해하는 것이 중요하다. 책 엘라스틱서치 실무 가이드와 엘라스틱서치 공식가이드북를 바탕으로 정리한 포스팅입니다. 내용에 오류가 있다면 댓글로 알려주시면 감사하겠습니다 :) 공식 가이드북 : 7.2.5 Object와 Nested Object 데이터 타입 JSON 포맷의 object, 즉 객체 타입의 값을 사용할 수 있다. 내부 객체를 계층적으로 포함하고 있는 경우 object 타입 형태로 사용한다. object 타입 정의를 위해 특정 키워드를 사용하지 않고 문서 구조를 입력하면 된다. Object 타입을 이해하기 위해 아래 예제를 ..
Elasticsearch 노리(Nori)형태소 분석기의 stoptags 한글 품사 태그 정리
Elasticsearch 노리(Nori)형태소 분석기의 stoptags 한글 품사 태그 정리
2020.04.19Elasticsearch에서 공식적으로 지원하는 한글 형태소 분석기 노리(Nori)의 품사 태그와 예시를 정리하였다. 공식 가이드북에 따르면 한글 검색에서는 명사, 동명사 정도만을 검색하고 조사, 형용사 등은 제거하는 것이 바람직하다고 한다. 하지만 이는 서비스하고 있는 업무 도메인에 따라 달라질 수 있을 것이다. 엘라스틱서치에서 지원하는 Nori의 품사 태그들이 어떤 것이 있는 지 알아보고, 각자의 상황에 맞게 쓰는 것을 추천한다. Nori 토크나이저가 사용하는 한글 사전은 mecab-ko-dic과 세종 말뭉치이다. 한글 단어의 품사 태그는 사전마다, 한글 형태소 분석기의 내부 로직에 따라 달라질 수 있다. 예를 들어, 국립국어원 혹은 다른 한글 형태소 분석기에서는 어떤 단어를 "접두사"로 매핑하였지만..
Elasticsearch in action 정리 블로그 발견
Elasticsearch in action 정리 블로그 발견
2020.04.18엘라스틱서치 구글링 중에 좋은 블로그를 발견하였다. elasticsearch in action 이라는 책을 정리하신 글로 보인다. 내가 보고있는 책 보다 심도있는 내용을 다루고 있어서 참고하기 좋아 보인다. "길은 가면, 뒤에 있다."라는 블로그이다. - 엘라스틱서치 : https://12bme.tistory.com/471?category=737765 - 데이터 검색 : https://12bme.tistory.com/477?category=737765 - 데이터 분석 : https://12bme.tistory.com/478?category=737765 - 유사도 검색 : https://12bme.tistory.com/478?category=737765 - 집계데이터 : https://12bme.tisto..
Elasticsearch 대소문자 색인과 검색 keyword tokenizer VS normalizer
Elasticsearch 대소문자 색인과 검색 keyword tokenizer VS normalizer
2020.04.17엘라스틱서치에서 데이터를 대소문자 구분없이 검색하기 위해서는 lowercase 혹은 uppercase 토큰 필터를 적용해야한다. 토큰필터가 적용되게 색인하기 위해서는 인덱스 매핑 시점에 필드에 analyzer나 normalizer를 설정하면 된다. Elasticsearh 공식문서, 김종민님의 공식가이드북, 책 엘라스틱서치 실무 가이드를 참고하여 제가 이해한 내용을 정리한 포스팅입니다. 포스팅 내용의 오류를 발견하시면 댓글 부탁드립니다 :) 예를 들어 cafe, Cafe, café 는 모두 다른 term이다. 하지만 사용자가 "cafe"로 검색했을 때 대소문자 구분없이 세 개의 term이 모두 검색되도록 할 수 있다. (café는 아스키코드를 처리해야하는 데 아래에서 내용을 다룬다) 필드에 토큰 필터를 적..