Springboot와 MySQL을 사용하여 Full-Text 검색 기능 구현하기
이 문서에서는 Spring과 MySQL을 사용하여 기본 Full-Text 검색 기능을 구현하는 방법을 소개합니다.
1. MySQL Full-Text 지원 테이블 생성
MySQL에서 Full-Text 검색을 사용하려면 해당 테이블에 FULLTEXT 인덱스를 만들어야 합니다. 아래 예시와 같이 필요한 열에 FULLTEXT 인덱스를 생성합니다:
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200),
content TEXT,
FULLTEXT (title, content)
) ENGINE=InnoDB;
2. Spring Boot 프로젝트에 MySQL 연결
Spring Boot에서 MySQL에 연결하려면 pom.xml에 MySQL Connector/J 의존성을 추가해야 합니다:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
그리고, application.properties 파일에 다음과 같이 MySQL 연결 정보를 설정합니다:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
3. Article Entity 및 Repository 생성
Article Entity 및 ArticleRepository를 생성하여 데이터베이스와 연결을 설정합니다:
@Entity
public class Article {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
// 생략: Getters, Setters, and Constructors
}
@Repository
public interface ArticleRepository extends JpaRepository<Article, Long> {
}
4. Full-Text 검색을 위한 Custom Query 생성
ArticleRepository에 Custom Query를 생성하여 MySQL의 Full-Text 검색 기능을 활용할 수 있도록 합니다:
@Query(value = "SELECT * FROM articles WHERE MATCH (title, content) AGAINST (?1)", nativeQuery = true)
List<Article> fullTextSearch(String keyword);
이제 fullTextSearch 메소드를 사용하여 제목과 내용에 일치하는 키워드를 포함하는 모든 기사를 검색할 수 있습니다.
5. 검색 기능을 사용하는 REST API 구현
검색 기능을 사용하는 REST API를 구현하려면 Spring Web 의존성도 추가해야 합니다:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
이제 검색 컨트롤러를 생성할 수 있습니다:
@RestController
@RequestMapping("/api/articles")
public class ArticleController {
private final ArticleRepository articleRepository;
// 의존성 주입
public ArticleController(ArticleRepository articleRepository) {
this.articleRepository = articleRepository;
}
@GetMapping("/search")
public List<Article> search(@RequestParam String keyword) {
return articleRepository.fullTextSearch(keyword);
}
}
이렇게 하면 /api/articles/search?keyword=검색어 엔드포인트를 통해 검색 기능을 사용할 수 있습니다.
필요에 따라 Full-Text 검색 기능을 커스터마이징하거나 확장할 수 있습니다. 이 문서는 Springboot와 MySQL을 사용하여 기본 Full-Text 검색 기능을 구현하는 방법을 소개하였습니다. 원하는대로 검색 기능을 적용하기 위해 이 가이드를 참조하세요.
0 개의 댓글:
Post a Comment