본문 바로가기

개발 일지

[TIL]이노베이션 캠프 80일차

1. 개발 진행 상황

검색 기능 강화

 

기존 코드

   // 코스(게시글) 검색(제목, 내용, 카테고리 검색)
   //Controller
    @GetMapping("/api/course/search")
    public Slice<PostResponseDto> search(@RequestParam(value = "keyword") String keyword){
        PageRequest pageRequest = PageRequest.of(0, 5);
        return postService.searchPost(keyword, pageRequest);
    }
    
    
    // Service
    @Transactional
    public Slice<PostResponseDto> searchPost(String keyword, Pageable pageable){
        return postRepository.findAllSearch(keyword, pageable);
    }
    
	
    // Repository interface
    @Query(value = "SELECT p FROM Post p WHERE p.title LIKE %:keyword% OR p.content LIKE %:keyword% OR p.weather LIKE %:keyword% OR p.region LIKE %:keyword% OR p.season LIKE %:keyword% OR p.who LIKE %:keyword%")
    List<Post> findAllSearch(String keyword);

문제점

1. 띄어쓰기 검색 시 해당 키워드가 포함되어 있어도 조회가 되지 않음

2. 한글자 검색은 됨, 계절을 검색하는데 봄 이면 '봄' 키워드가 들어간 게시글 조회는 되지만 '봄가을' 이라고 검색하면 조회가 안됨

3. 위 1, 2 문제 발생 시 해당 상황에 맞는 응답 필요할 듯 

 

수정 코드

   // 코스(게시글) 검색(제목, 내용, 카테고리 검색)
   //Controller
    @GetMapping("/api/course/search")
    public Slice<PostResponseDto> search(@RequestParam(value = "keyword") String keyword){
        PageRequest pageRequest = PageRequest.of(0, 5);
        return postService.searchPost(keyword, pageRequest);
    }
    
    
    // Service
    @Transactional
    public Slice<PostResponseDto> searchPost(String keyword, Pageable pageable){
        return postRepository.findAllSearch(keyword, pageable);
    }
    
    // findByTitleContainingOrContentContainingOrWeatherContainingOrregionContainingOrSeasonContainingOrWhoContaining

 

2. 개발 중 발생한 이슈와 해결

3. 새로 배운 것

4. 참고 레퍼런스

5. 오늘 한 일 / 회고

6. TO-DO LIST