뉴닉 클론코딩을 한 데이터를 바탕으로 검색 기능을 구현해보았다.
참고: Jsoup 크롤링
전체 조회를 통해, DB 에 기사글이 저장된 상태다.
// 검색 기능
@GetMapping("/api/articles/search")
public ApiResponseDto searchKeyword(@RequestParam("keyword") String keyword) {
return new ApiResponseDto(200, "OK", crawlingArticle.searchKeyword(keyword));
}
api/articles/search?keyword=검색키워드
이런 형태로 나오게 된다. // 검색 기능
public List<ArticleListResponseDto> searchKeyword(String keyword) {
// List<Article> articleList = articleRepository.findByTitleContaining(keyword); // title 에서만 검색
List<Article> articleList = articleRepository.findByTitleContainingOrContentContaining(keyword, keyword); // title & content 에서 검색
List<ArticleListResponseDto> articleResponseDtoList = new ArrayList<>();
for (Article article : articleList) {
articleResponseDtoList.add(new ArticleListResponseDto(article));
}
return articleResponseDtoList;
}
Containing
@Repository
public interface ArticleRepository extends JpaRepository<Article, String> {
// List<Article> findByTitleContaining(String keyword); // title 에서만 검색
List<Article> findByTitleContainingOrContentContaining(String title, String content); // title & content 에서 검색
Optional<Article> findById(Long articleId);
}
참고: [Spring Boot] Spring Data JPA의 사용법과 사용이유, 예시
참고: Spring Boot JPA 게시판 검색 기능 & 검색 페이징 구현