개요
Groovy는 |Fess|의 기본 스크립트 언어입니다. Java 가상 머신(JVM) 위에서 동작하며, Java와의 높은 호환성을 유지하면서 더 간결한 구문으로 스크립트를 작성할 수 있습니다.
기본 구문
변수 선언
문자열 조작
컬렉션 조작
조건 분기
반복 처리
데이터 스토어 스크립트
데이터 스토어 설정에서의 스크립트 예입니다.
참고
데이터 스토어 스크립트에서는 필드명=식 의 각 행이 각각 독립된 하나의 식으로 평가됩니다. 따라서 import 문·복수 행에 걸친 def 변수 선언·여러 필드를 한꺼번에 설정하는 복수 행의 제어 구문( if 블록 등)은 사용할 수 없습니다. Java 클래스를 이용하는 경우에는 완전 정규화 클래스명(FQCN)을 사용하여 하나의 식으로 기술하고, 조건 분기는 필드별로 삼항 연산자로 기술합니다(예: url=data.published ? data.url : null ). 또한 여기서 사용하는 변수명 data 는 설명을 위한 예시이며, 실제 변수명은 사용하는 데이터 스토어 커넥터에 따라 다릅니다. 자세한 내용은 데이터 저장소 크롤링 를 참조하세요.
기본 매핑
URL 생성
콘텐츠 가공
날짜 처리
사용 가능한 객체
스크립트 실행 컨텍스트에 따라 사용 가능한 객체가 다릅니다.
| 컨텍스트 | 객체 | 설명 |
|---|---|---|
| 모든 컨텍스트 | container | DI 컨테이너. container.getComponent("...") 를 통해 컴포넌트에 접근할 때 사용 |
| 스케줄 작업 | executor | 작업 실행 제어 ( JobExecutor ). 작업 정지 지원에 필요 |
| 데이터 스토어 | (커넥터별) | 각 데이터 스토어가 제공하는 데이터 레코드 변수. 변수명은 커넥터에 따라 다름 |
| 패스 매핑 | url , matcher | 변환 대상 URL 문자열과 정규표현식 매치 결과( Matcher ). groovy: 접두사가 붙은 치환 설정에서 이용 가능 |
| 문서 부스트 | (문서 필드) | 대상 문서의 각 필드를 변수로 이용 가능(조건식·부스트값 식에서 사용) |
스케줄 작업 스크립트
스케줄 작업에서 사용하는 Groovy 스크립트 예입니다. 스케줄 작업에서는 container 와 executor 를 사용할 수 있습니다. executor 를 작업의 execute() 메서드에 전달하면 작업 정지 제어가 활성화됩니다.
참고
스케줄 작업 스크립트는 스크립트 전체가 하나의 Groovy 스크립트로 평가됩니다. 따라서 데이터 스토어 스크립트와 달리, import 문·복수 행의 def 선언·복수 행의 제어 구문을 사용할 수 있습니다. 이후의 “Java 클래스 사용”, “Fess 컴포넌트 접근”, “오류 처리”, “디버그와 로그 출력” 예시도 이 완전한 스크립트 컨텍스트를 전제로 합니다.
크롤 작업 실행
조건부 크롤링
여러 작업을 순서대로 실행
Java 클래스 사용
Groovy 스크립트 내에서는 Java 표준 라이브러리나 Fess 클래스를 사용할 수 있습니다.
날짜/시간
파일 조작
HTTP 통신
경고
외부 리소스 접근은 성능에 영향을 미치므로 필요 최소한으로 줄이세요.
Fess 컴포넌트 접근
``container``를 사용하여 Fess 컴포넌트에 접근할 수 있습니다.
시스템 헬퍼
설정값 가져오기
검색 실행
오류 처리
import 문은 스크립트의 맨 앞에 기술해야 합니다( try-catch 등의 블록 안에는 기술할 수 없습니다). try-catch 로 예외를 포착하여 작업의 오류를 제어할 수 있습니다.
디버그와 로그 출력
로그 출력
디버그용 출력
모범 사례
단순하게 유지: 복잡한 로직은 피하고 읽기 쉬운 코드 작성
null 체크:
?.연산자나?:연산자 활용예외 처리: 적절한 try-catch로 예상치 못한 오류 대응
로그 출력: 디버깅하기 쉽도록 로그 출력
성능: 외부 리소스 접근 최소화
참고 정보
스크립팅 개요 - 스크립팅 개요
데이터 저장소 크롤링 - 데이터 스토어 설정 가이드
스케줄러 - 스케줄러 설정 가이드