Fess 아키텍처 및 주요 기능

개요

이 페이지에서는 Fess의 주요 기능과 아키텍처를 컴포넌트 관점에서 설명합니다. Fess는 검색 시스템 구축을 용이하게 하기 위해 모듈화된 설계를 채택하고 있습니다.

전체 아키텍처

Fess는 다음과 같은 주요 컴포넌트로 구성됩니다:

Fess 아키텍처 개요

Fess 아키텍처 개요

주요 컴포넌트

1. 크롤러 서브시스템

크롤러 서브시스템은 다양한 데이터 소스에서 문서를 수집하는 역할을 담당합니다.

주요 클래스 및 기능:

Crawler

  • 역할: 크롤 처리의 중심이 되는 클래스

  • 주요 기능:

    • 웹사이트, 파일 시스템, 데이터 스토어로부터 문서 수집

    • 크롤 설정에 기반한 대상 선별

    • 크롤 작업 실행 관리

    • 크롤 결과의 세션 관리

  • 실행 방식:

    • 스케줄러에 의한 정기 실행

    • 관리 화면에서의 수동 실행

    • 명령줄에서의 실행

WebCrawler

  • 역할: 웹사이트 크롤링 처리

  • 주요 기능:

    • HTML 페이지 가져오기 및 분석

    • 링크 추출 및 추적

    • JavaScript 실행 사이트 지원

    • 인증이 필요한 사이트 지원 (BASIC/DIGEST/NTLM/FORM)

    • robots.txt 준수

FileCrawler

  • 역할: 파일 시스템 크롤링 처리

  • 주요 기능:

    • 로컬 파일 시스템 순회

    • 네트워크 드라이브(SMB/CIFS) 액세스

    • 파일 형식 판정 및 적절한 파서 선택

    • 권한 기반 액세스 제어

DataStoreCrawler

  • 역할: 외부 데이터 스토어 크롤링 처리

  • 주요 기능:

    • 데이터베이스로부터 데이터 취득

    • 클라우드 스토리지(Google Drive, Dropbox, Box 등) 연동

    • 그룹웨어(Office 365, Slack, Confluence 등) 연동

    • 플러그인에 의한 확장성

CrawlConfig

  • 역할: 크롤 설정 관리

  • 주요 기능:

    • 크롤 대상 URL 또는 경로 정의

    • 크롤 깊이 제한

    • 크롤 간격 설정

    • 제외 패턴 지정

    • 레이블 부여

2. 인덱싱 서브시스템

인덱싱 서브시스템은 수집한 문서를 검색 가능한 형식으로 변환합니다.

DocumentParser

  • 역할: 문서 분석 및 텍스트 추출

  • 주요 기능:

    • Apache Tika를 이용한 다양한 파일 형식 지원

    • 메타데이터 추출

    • 문자 인코딩 자동 감지

    • 언어 자동 판별

Indexer

  • 역할: OpenSearch/Elasticsearch에 인덱스 등록

  • 주요 기능:

    • 문서 인덱스 생성

    • 벌크 인덱싱을 통한 고속화

    • 인덱스 최적화

    • 오래된 문서 삭제

FieldMapper

  • 역할: 필드 매핑 정의

  • 주요 기능:

    • 문서 필드 정의

    • 커스텀 필드 추가

    • 필드 타입 지정(text, keyword, date 등)

    • 다국어 지원 애널라이저 설정

3. 검색 서브시스템

검색 서브시스템은 사용자의 검색 쿼리를 처리하고 결과를 반환합니다.

SearchService

  • 역할: 검색 처리의 중심

  • 주요 기능:

    • 쿼리 분석 및 최적화

    • OpenSearch/Elasticsearch로의 쿼리 실행

    • 검색 결과 랭킹

    • 패싯 검색 지원

    • 하이라이트 표시

QueryProcessor

  • 역할: 검색 쿼리 전처리

  • 주요 기능:

    • 쿼리 정규화

    • 동의어 확장

    • 불용어 처리

    • 쿼리 보정

SuggestService

  • 역할: 추천 기능 제공

  • 주요 기능:

    • 입력 자동완성 후보 생성

    • 인기 검색 키워드 제공

    • 커스텀 사전 활용

RankingService

  • 역할: 검색 결과 랭킹 조정

  • 주요 기능:

    • 문서 부스팅

    • 필드 부스팅

    • 커스텀 스코어링

    • 관련도 조정

4. 관리 서브시스템

관리 서브시스템은 Fess의 설정과 운영을 관리합니다.

AdminConsole

  • 역할: 웹 기반 관리 인터페이스

  • 주요 기능:

    • 크롤 설정 관리

    • 스케줄러 설정

    • 사용자 및 역할 관리

    • 시스템 설정

    • 로그 참조

Scheduler

  • 역할: 작업 스케줄 관리

  • 주요 기능:

    • 크롤 작업 정기 실행

    • 인덱스 최적화 정기 실행

    • 로그 로테이션

    • Cron 표현식을 사용한 스케줄 설정

BackupManager

  • 역할: 백업 및 복원

  • 주요 기능:

    • 설정 데이터 백업

    • 인덱스 스냅샷

    • 복원 기능

    • 자동 백업 스케줄링

5. 인증 및 권한 서브시스템

인증 및 권한 서브시스템은 보안과 액세스 제어를 관리합니다.

AuthenticationManager

  • 역할: 사용자 인증 관리

  • 주요 기능:

    • 로컬 인증

    • LDAP/Active Directory 연동

    • SAML 연동

    • OpenID Connect 연동

    • 역할 기반 액세스 제어(RBAC)

RoleManager

  • 역할: 역할 및 액세스 권한 관리

  • 주요 기능:

    • 역할 정의

    • 사용자에 대한 역할 할당

    • 문서 레벨 액세스 제어

    • 검색 결과 필터링

6. API 계층

API 계층은 외부 시스템과의 연동을 제공합니다.

SearchAPI

  • 역할: 검색 API 제공

  • 주요 기능:

    • REST API를 통한 검색

    • JSON 형식 응답

    • OpenSearch 호환

    • GSA(Google Search Appliance) 호환 API

AdminAPI

  • 역할: 관리 API 제공

  • 주요 기능:

    • 크롤 설정의 CRUD 작업

    • 인덱스 관리

    • 스케줄러 제어

    • 시스템 정보 취득

7. 데이터 스토리지

데이터 스토리지는 Fess의 데이터 영속화를 담당합니다.

ConfigStore

  • 역할: 설정 데이터 저장

  • 주요 기능:

    • 크롤 설정 영속화

    • 시스템 설정 저장

    • 사용자 및 역할 정보 관리

    • H2 데이터베이스 또는 외부 DB 사용

SearchEngine

  • 역할: 검색 엔진과의 연동

  • 주요 기능:

    • OpenSearch/Elasticsearch와의 통신

    • 인덱스 관리

    • 쿼리 실행

    • 클러스터링 지원

플러그인 아키텍처

Fess는 플러그인을 통한 확장이 가능합니다.

DataStore 플러그인

  • 역할: 외부 데이터 소스 연결

  • 제공되는 플러그인:

    • Atlassian(Confluence/Jira)

    • Box

    • CSV

    • Database

    • Dropbox

    • Git/GitBucket

    • Google Drive

    • Office 365

    • S3

    • Slack

    • 기타

Theme 플러그인

  • 역할: 검색 화면 커스터마이징

  • 제공되는 플러그인:

    • Simple Theme

    • Classic Theme

Ingester 플러그인

  • 역할: 인덱스 데이터의 전처리 및 후처리

  • 제공되는 플러그인:

    • Logger

    • NDJSON

Script 플러그인

  • 역할: 스크립트를 통한 커스터마이징

  • 제공되는 플러그인:

    • Groovy

    • OGNL

설정 관리

FessConfig

  • 역할: 시스템 설정의 일원화 관리

  • 주요 설정 항목:

    • 시스템 전반 설정

    • 크롤 설정

    • 검색 설정

    • 인증 설정

    • 알림 설정

    • 성능 설정

DynamicProperties

  • 역할: 동적 설정 관리

  • 주요 기능:

    • 실행 시 설정 변경

    • 환경 변수 활용

    • 프로파일별 설정

요약

Fess는 이러한 컴포넌트들이 연계함으로써 강력한 전문 검색 시스템을 실현하고 있습니다. 각 컴포넌트는 느슨한 결합 설계로 되어 있으며, 필요에 따라 커스터마이징 및 확장이 가능합니다.

더 자세한 개발자 정보는 다음을 참조하세요: