RDBMS 데이터베이스에 있는 여러 테이블의 컬럼 값 중 '특정 키워드에 해당하는 데이터'를 찾고 싶은 경우에는 어떻게 해야 할까?
모든 테이블을 전부 조회(select)하는 쿼리나 코드를 만들기에는 부담이고, CDC 또는 Elastic search를 구축하고 기술을 학습하기에는 너무 과하다는 생각이 든다면, Apache Solr를 고민해 볼 만하다.
해당 포스트에서는 Apache Solr를 활용해서 여러 테이블의 컬럼 중 검색이 필요한 컬럼의 값들만 저장하고, 검색하는 방법에 대해서 설명한다.
Apache Solr
Apache Solr는 Apache Lucene 기반의 검색 플랫폼으로, 높은 성능과 확장성을 제공한다. Lucene은 텍스트 검색 및 색인화를 위한 강력한 라이브러리로, Solr은 이를 기반으로 구축되어 웹 기반의 사용자 인터페이스와 RESTful API를 통해 사용자에게 편리한 검색 서비스를 제공한다.
Apache Solr는 다양한 기능을 가지고 있으며, 주요 기능은 다음과 같다.
(1) 풍부한 검색 기능
Solr은 다양한 검색 기능을 지원하여 사용자가 복잡한 쿼리를 작성하고 다양한 조건으로 데이터를 필터링할 수 있다.
(2) 확장성과 분산 처리
대량의 데이터를 다루는 환경에서 Solr은 데이터를 여러 노드에 분산하여 처리할 수 있다.
이는 높은 확장성을 제공하며, 대용량 데이터셋에 대한 효율적인 검색을 가능하게 한다.
(3) 문서 색인화
Solr은 다양한 유형의 문서를 색인화하여 검색할 수 있다. 텍스트 문서뿐만 아니라 XML, JSON 등 다양한 형식의 문서를 지원한다.
(4) 검색 결과의 하이라이팅
사용자가 입력한 검색어에 해당하는 부분을 강조하여 표시하여, 검색 결과를 더 직관적으로 제공한다.
(5) 분석 및 통계
Solr은 검색 트래픽, 사용자 동작 및 검색 결과에 대한 통계를 수집하고 분석할 수 있는 기능을 제공한다.
포스팅 작성 환경
- Window Pro 10
- JDK 17
- Solr 8.11.3
Solr를 실행시키기 전에 먼저 JDK부터 설치해야 한다. 8.11 버전에서는 8 이상을 권장하고 있다.
Apache Solr 설치하기
아래 사이트에 접속하여 Solr를 다운로드한다.
https://solr.apache.org/downloads.html
현재 최신 버전은 9.5.0 버전이지만, 8.11.3을 이용할 것이다. 9 버전 이후로는 DataImportHanlder가 삭제되어, 해당 기능을 사용하기 위해서는 별도의 작업이 필요하기 때문이다.
Binary release 옆에 있는 링크(solr-8.11.3.tgz)를 클릭해서 다운로드한다.
다운로드가 완료된 알집 파일은 C 드라이브에 solr 폴더를 만들고 저장한다.
solr 실행하기
solr\bin 디렉터리에 들어가서 cmd 창을 열어준다. 그리고 solr start 명령어를 입력하면 다음과 같이 메시지가 뜨면서 solr가 실행된다.
solr start
30초 정도 기다리면 solr가 실행된다.
이후 브라우저를 열어서 localhost:8983/solr에 접속하면 다음과 같이 solr Admin 화면이 출력된다.
만든 코어(core)가 아무것도 없기 때문에 당장은 어떤 것도 할 수 없다.
코어 생성하기
Apache Solr의 코어(core)는 Solr 인스턴스 내에서 독립적으로 운영되는 검색 엔진의 단위이다.
각 코어는 자체적인 인덱스, 구성 파일, 스키마를 가지고 있으며, 특정 데이터 세트의 검색과 인덱싱을 담당한다. Solr 서버는 하나 이상의 코어를 호스팅 할 수 있으며, 각 코어는 다른 데이터 세트에 대한 검색 기능을 제공할 수 있다.
코어를 생성하는 기본적인 방법은 다음과 같이 cmd 창에서 create -c <생성할 코어 이름>을 통해 생성할 수 있다.
solr create -c <생성할 코어 이름>
코어를 생성하고 다시 어드민 화면으로 이동해서 새로고침 하면 하단에 방금 생성한 코어를 선택할 수 있도록 변경된다.
데이터베이스에서 통합 검색할 테이블과 컬럼 필터링
데이터베이스에 있는 테이블 중 검색이 필요한 테이블과 그 테이블에 있는 컬럼을 필터링해야 한다.
예를 들면, 다음과 같은 테이블이 있다고 가정한다.
애플리케이션에서는 해당 테이블에서 title, content 컬럼에서 특정 키워드가 있는지가 궁금하기 때문에, title, content 컬럼의 데이터만 추려낸다.
다음 포스팅에서 데이터베이스에서 원하는 테이블, 컬럼을 이용해서 데이터 세트를 만드는 방법, solr 설정 방법, 검색 과정에 대해 설명한다.
REFERENCE
'OpenSource > Apache Solr' 카테고리의 다른 글
Apache Solr를 활용하여 MariaDB 통합 검색 기능 구현하기 (2) (1) | 2024.02.25 |
---|
댓글