프로그래밍/spring

웹 에디터 사용시 키워드(제목, 내용) 검색 방법

승민아 2024. 9. 5. 13:52

게시글 검색 기능에 "img" 키워드로 검색을하자

"img" 키워드 검색 결과

성공적으로 게시글 조회가 잘 되지만.

 

게시글 내용

해당 게시글의 내용이나 제목에는 "img" 키워드를 포함하지 않는다.

 

LIKE 쿼리

문제 원인은 웹 에디터의 게시글의 내용을 태그와 함께 모든 정보를 DB에 저장하는데

이것을 LIKE 연산자로 키워드 검색을 했기 때문이다.

 

 

DB에 저장된 게시글 내용

DB에 저장된 해당 게시글의 내용에는 <img> 태그를 포함하고 있기 때문에 검색이 된것이다.

 

게시글 테이블

위와 같이 순수 텍스트 내용만 담을 pure_content 컬럼을 추가해서

태그 내용은 제외하고 저장하자.

 

웹 에디터 내용을 어떻게 파싱해서 순수 텍스트만 저장할까싶은데

라이브러리를 사용하자.

 

자바에서 사용하는 Jsoup 라이브러리를 이용해 html을 파싱할 수 있다.

https://jsoup.org/download

 

Download and install jsoup

Download and install jsoup jsoup is available as a downloadable .jar java library. The current release version is 1.18.1. What's new See the 1.18.1 release announcement for the latest changes, or the changelog for the full history. Previous releases of jso

jsoup.org

 

 

현재 나의 환경은 gradle이다. gradle의 경우 build.gradle에 다음 라인을 추가하자.

// Jsoup
implementation 'org.jsoup:jsoup:1.18.1'

 

사용법은 다음과 같다.

System.out.println("[content]\n" + poster.getContent());

Document parse = Jsoup.parse(poster.getContent());
System.out.println("[pure_content]\n" + parse.text());

 

다음과 같은 다양한 태그가 섞인 게시글의 내용이 있지만

예제 게시글

 

Jsoup.parse

태그들을 파싱해서 순수 텍스트만 가져올 수 있다.

이 순수 텍스트를 가지는 pure_content 칼럼을 이용해서 키워드 검색에 사용하거나

게시글 내용 미리보기에 태그들을 제거하여 미리보기 기능도 제공할 수 있다.