본문 바로가기

전체 글46

Custom Validation 사용해보기 실제 애플리케이션을 개발하다 보면 어떤 객체의 값이 비었는지, 공백인지, 재대로 된 패턴에 맞는지 등의 유효성 검사를 빈번하게 사용해야 하는 경우가 많습니다. Spring 에서는 Java Bean Validation 을 이용하여 검사 대상 클래스에 어노테이션 기반 제약 조건을 선언하여 간결하게 유효성 검사를 할 수 있습니다. 의존성 ... dependencies { ... implementation("org.springframework.boot:spring-boot-starter-validation") ... } ... spring-starter-validation 의존성을 추가하여 사용 사용 예시 @NoArgsConstructor(access = AccessLevel.PRIVATE) public cla.. 2021. 3. 20.
[ ElasticSearch ] Score 계산과 function_score ElastiSearch 는 기본적으로 BM25 알고리즘을 이용해 문서에 대한 score 계산을 한다. BM25 알고리즘 검색 키워드의 빈도수, 문서상의 키워드의 빈도수, 문서의 크기 기준으로 score 를 계산합니다. Term Frequency 문서 내에서 자주 등장하는 단어(Term) 에 가중치를 높게 부여 Inverse Document Frequency 많은 문서에서 등장하는 단어의 가중치는 낮추고, 일부 문서에만 등장하는 단어에 대해 높은 가중치 부여 Field-Length Norm 두개 이상의 문서에서 동일한 키워드가 동일한 빈도수로 등장한다고 가정할 때, 문서의 길이가 작은 문서에 더 높은 가중치를 부여 실제 검색 요청시 explain=true 를 Query Parameter 로 넘기면, Sco.. 2021. 3. 7.
Spring Data Elasticsearch 를 활용한 Search After 구현 Spring Data Elasticsearch (버전 4.1) 를 이용한 Pagination 구현 시 from, size 를 활용하여 원하는 Page 를 Size 개수만큼 얻을 수 있다. Spring Data Elasticsearch 사용할 경우 PageRequest 를 사용하여 Pagination 을 구현할 수 있다. @RequiredArgsConstructor @Service public class AccountSearchService { private final AccountRepository accountRepository; ... public Flux searchAllWithPagination(int offset, int size) { NativeSearchQuery query = new Nat.. 2021. 3. 1.