처음부터 대소문자를 구분하지 않고 검색할 수 있는 검색기능을 만들기 위해 오라클의 UPPER기능을 통해 검색어의 대소문자
구분을 제거 하여 검색하도록 하였다.
오픈전 작업 시 테스트 했을 때는 문제 없이 필터링 되어 넘어갔는데 오픈 후에 다시 검색기능을 테스트 해 보니 대문자로 검색 시
대문자만 검색되고 소문자로 검색 시 소문자만 검색되는 문제가 발생 하였다.
그래서 원인 분석에 들어갔고 혹시나 다음과 같이 작성했던 쿼리문이 문제가 되었나 싶어
=> UPPER(A.SUBJECT) LIKE UPPER('%'||#search_key#||'%')
다음과 같이 수정하였다.
=> UPPER(A.SUBJECT) LIKE '%'||UPPER(#search_key#)||'%'
그 결과 이상없이 대소문자를 필터링 하여 검색이 되었다. 하지만 여기서 예상치 못했던 또 다른 문제가 발생하였다.
검색 결과 화면에 보여질 때 필터링 단어의 스타일을 바꿔주는 부분에서 대문자로 검색 시 대문자로 검색된 문자만 변경되고
소문자로 검색 시 소문자로 검색된 문자만 변경되는 현상이다.
대문자로 검색하든 소문자로 검색하든 스타일이 적용 되어야 한다는게 맞기 때문에 원인 분석 후 DB에서 조회해온 제목과 내용을
replaceAll를 통해 스타일을 적용해 주는 부분에서 대소문자를 구분하여 스타일을 적용해 준다고 판단하여 대소문자 구분없이
치환해 주는 방법을 구글링 해 보았다.
치환할 문자 앞부분에 (?i)를 붙여 주면 대소문자 구분없이 치환해 준다는 것이다.
적용 방법은 다음과 같다.
=> replaceAll("(?i)"+board_search_code, "<b>"+board_search_code+"</b>")