들어가며
지난 회에서는 기업에서의 검색 기반의 필요성과 Fess의 개요를 소개했습니다. 본 기사에서는 실제로 Fess를 기동하고 검색을 체험하기까지의 최단 절차를 소개합니다.
목적은 “Fess로 어떤 검색 경험을 얻을 수 있는가”를 빠르게 이해하는 것입니다. Docker Compose를 사용하여 몇 줄의 커맨드만으로 Fess 환경을 구축하고, 웹 사이트를 크롤링하며, 검색까지 체험합니다.
대상 독자
Fess를 처음 시도하는 분
도입 검토를 위한 PoC(개념 실증)를 신속하게 수행하고 싶은 분
Docker의 기본적인 조작이 가능한 분
필요한 환경
Docker 및 Docker Compose가 이용 가능한 환경
메모리 4GB 이상 (권장 8GB 이상)
인터넷 연결
사전 준비 (Linux / WSL2의 경우)
Fess가 이용하는 OpenSearch는 기동 시 많은 메모리 맵 영역을 필요로 합니다. Linux나 WSL2 환경에서는 다음 커맨드로 vm.max_map_count 를 올려 주십시오.
$ sudo sysctl -w vm.max_map_count=262144
이 설정은 OS를 재시작하면 원래대로 돌아갑니다. 영구 적용하려면 /etc/sysctl.conf 에 추가합니다.
$ echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
참고
macOS의 Docker Desktop을 이용하는 경우, 이 설정은 필요하지 않습니다.
Fess를 기동하기
Docker Compose 파일 취득
Fess의 Docker Compose 파일은 GitHub 리포지토리에 공개되어 있습니다. 다음 커맨드로 취득합니다.
$ git clone https://github.com/codelibs/docker-fess.git
$ cd docker-fess/compose
compose 디렉터리에는 여러 구성 파일이 준비되어 있습니다. 우선 심플한 구성으로 기동해 봅시다.
기동
다음 커맨드로 Fess와 OpenSearch를 기동합니다.
$ docker compose up -d
첫 기동 시에는 Docker 이미지 다운로드가 수행되므로 수 분이 소요될 수 있습니다. 기동 상태는 다음 커맨드로 확인할 수 있습니다.
$ docker compose ps
모든 컨테이너가 “running” 상태가 되면 기동 완료입니다.
검색 화면에 접근
브라우저에서 http://localhost:8080/ 에 접근합니다. Fess의 검색 톱 화면이 표시되면 정상적으로 기동된 것입니다.
이 시점에서는 아직 인덱스가 비어 있으므로, 검색해도 결과가 반환되지 않습니다. 다음 단계에서 크롤 대상을 등록하고, 검색 가능한 상태로 만들어 갑니다.
관리 화면을 확인하기
관리 화면 로그인
http://localhost:8080/admin/ 에 접근하여 관리 화면에 로그인합니다. 기본 인증 정보는 다음과 같습니다.
사용자명:
admin패스워드:
admin
관리 화면의 대시보드에서 시스템 상태를 한눈에 확인할 수 있습니다.
관리 화면의 구성
관리 화면의 좌측 메뉴에는 Fess의 주요 관리 기능이 나열되어 있습니다. 여기서는 개요만 확인해 둡시다.
크롤러
검색 대상을 등록하는 영역입니다. 웹, 파일 시스템, 데이터 스토어의 3종류 크롤 설정을 관리합니다.
시스템
스케줄러, 디자인, 사전 등 시스템 전체의 관리 기능입니다. 사전에서는 동의어나 불용어 등 검색 품질에 관련된 설정을 관리합니다.
시스템 정보
검색 로그, 작업 로그, 크롤 정보, 백업 등 각종 로그 및 유지보수 기능을 제공합니다.
웹 사이트를 크롤링해 보기
크롤 대상 등록
실제로 웹 사이트를 크롤링하여 검색할 수 있도록 합시다. 여기서는 Fess의 공식 사이트를 대상으로 합니다.
관리 화면의 좌측 메뉴에서 [크롤러] > [웹]을 선택
[신규 작성]을 클릭
다음 내용을 입력합니다
URL:
https://fess.codelibs.org/ja/크롤 대상으로 할 URL:
https://fess.codelibs.org/ja/.*최대 접근 수:
50스레드 수:
2간격:
10000
[작성]을 클릭하여 저장
이로써 Fess의 공식 사이트(일본어 페이지)를 최대 50페이지, 10초 간격으로 크롤링하는 설정이 완료되었습니다.
크롤 실행
설정을 저장한 것만으로는 크롤이 시작되지 않습니다. 크롤을 시작하려면 스케줄러에서 작업을 실행합니다.
[시스템] > [스케줄러]를 선택
“Default Crawler”를 선택
[지금 시작]을 클릭
크롤이 시작됩니다. 진행 상황은 [시스템 정보] > [크롤 정보]에서 확인할 수 있습니다. 50페이지 정도라면 수 분이면 크롤이 완료됩니다.
검색을 체험하기
검색해 보기
크롤 완료 후, 검색 화면 http://localhost:8080/ 으로 돌아가서 검색해 봅시다.
예를 들어 “인스톨”이라고 입력하여 검색하면, Fess 사이트의 인스톨 관련 페이지가 검색 결과로 표시됩니다.
검색 결과 화면의 요소
검색 결과 화면에는 다음과 같은 요소가 표시됩니다.
검색 결과 리스트
각 결과에는 타이틀, URL, 본문의 발췌(스니펫)가 표시됩니다. 검색 키워드와 일치하는 부분은 하이라이트 표시됩니다.
검색 건수와 소요 시간
검색 결과 상단에 히트 건수와 검색에 걸린 시간이 표시됩니다.
페이지네이션
결과가 여러 페이지에 걸치는 경우, 페이지 이동 내비게이션이 표시됩니다.
더 편리한 검색 기능
Fess는 단순한 키워드 검색 외에도 다양한 검색 기능을 갖추고 있습니다.
AND/OR 검색
여러 키워드를 스페이스로 구분하면 AND 검색이 됩니다. OR 를 사용하면 OR 검색도 가능합니다.
インストール Docker # AND 검색 (양쪽 모두 포함)
インストール OR Docker # OR 검색 (어느 쪽이든 포함)
구문 검색
더블 쿼트로 감싸면, 해당 어순으로 일치하는 문서를 검색합니다.
"全文検索サーバー"
제외 검색
특정 키워드를 포함하지 않는 결과를 검색하려면 마이너스 기호를 사용합니다.
インストール -Windows # "Windows"를 포함하지 않는 결과
환경의 중지와 재개
중지
검색 체험이 끝나면, 다음 커맨드로 환경을 중지합니다.
$ docker compose down
데이터(인덱스)를 유지한 채 중지하므로, 재기동하면 동일한 상태로 이용을 재개할 수 있습니다.
데이터도 포함하여 완전히 정리하고 싶은 경우
볼륨도 포함하여 삭제하려면 다음 커맨드를 실행합니다.
$ docker compose down -v
이 경우, 크롤로 생성한 인덱스도 삭제됩니다.
검색 체험에서 보이는 것들
여기까지의 체험으로 Fess의 기본적인 동작을 확인할 수 있었습니다. 여기서, 실제 업무 활용을 상정하여 몇 가지 의문이 떠오를 수 있습니다.
“사내 파일 서버도 검색 대상으로 할 수 있는가?” → 제4회 에서 다룹니다
“기존 사내 사이트에 검색창을 삽입할 수 있는가?” → 제3회 에서 다룹니다
“부서별로 보이는 정보를 제어할 수 있는가?” → 제5회 에서 다룹니다
“Slack이나 Confluence도 검색하고 싶다” → 제6회 에서 다룹니다
“AI로 질문에 답변해 주었으면 한다” → 제19회 에서 다룹니다
Fess는 이러한 모든 시나리오에 대응할 수 있습니다. 본 시리즈를 통해 단계적으로 이들의 실현 방법을 소개해 나갑니다.
정리
본 기사에서는 Docker Compose를 사용하여 Fess를 기동하고, 웹 사이트의 크롤링부터 검색까지를 체험했습니다.
Docker Compose로 Fess + OpenSearch를 커맨드 하나로 기동
관리 화면에서 크롤 대상을 등록하고, 스케줄러로 실행
검색 화면에서 키워드 검색, AND/OR 검색, 구문 검색을 체험
환경의 중지 및 재개도 간단
다음 회에서는 기존 웹 사이트나 포털에 Fess의 검색 기능을 삽입하는 방법을 소개합니다.