데이터 저장소 크롤링
개요
Fess 에서는 데이터베이스나 CSV 등의 데이터 소스를 크롤링 대상으로 지정할 수 있습니다. 여기서는 이를 위해 필요한 데이터 저장소 설정에 대해 설명합니다.
관리 방법
표시 방법
아래 그림의 데이터 저장소 설정 목록 페이지를 열려면 왼쪽 메뉴의 [크롤러 > 데이터 저장소]를 클릭합니다.

편집하려면 설정 이름을 클릭합니다.
설정 생성
데이터 저장소 설정 페이지를 열려면 신규 생성 버튼을 클릭합니다.

설정 항목
이름
크롤링 설정 이름을 지정합니다.
핸들러 이름
데이터 저장소를 처리하는 핸들러 이름입니다.
DatabaseDataStore: 데이터베이스를 크롤링합니다
CsvDataStore: CSV/TSV 파일을 대상으로 크롤링합니다
CsvListDataStore: 인덱싱 대상 파일 경로를 기술한 CSV 파일을 크롤링합니다
매개변수
데이터 저장소에 관한 매개변수를 지정합니다.
스크립트
데이터 저장소에서 가져온 값을 어떤 필드에 설정할지 등을 지정합니다. 표현식은 Groovy로 작성할 수 있습니다.
부스트 값
이 설정으로 크롤링할 때 문서의 부스트 값을 지정합니다.
권한
이 설정의 권한을 지정합니다. 권한 지정 방법은 예를 들어, developer 그룹에 속한 사용자에게 검색 결과를 표시하려면 {group}developer로 지정합니다. 사용자 단위 지정은 {user}사용자명, 역할 단위 지정은 {role}역할명, 그룹 단위 지정은 {group}그룹명으로 지정합니다.
가상 호스트
가상 호스트의 호스트명을 지정합니다. 자세한 내용은 설정 가이드의 가상 호스트 를 참조하십시오.
상태
이 크롤링 설정을 사용할지 여부를 지정합니다.
설명
설명을 입력할 수 있습니다.
설정 삭제
목록 페이지의 설정 이름을 클릭하고 삭제 버튼을 클릭하면 확인 화면이 표시됩니다. 삭제 버튼을 누르면 설정이 삭제됩니다.
예
DatabaseDataStore
데이터베이스 크롤링에 대해 설명합니다.
예를 들어, 다음과 같은 테이블이 MySQL의 testdb 라는 데이터베이스에 있고, 사용자 이름 hoge, 비밀번호 fuga 로 접속할 수 있다고 가정하고 설명합니다.
CREATE TABLE doc (
id BIGINT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content VARCHAR(255) NOT NULL,
latitude VARCHAR(20),
longitude VARCHAR(20),
versionNo INTEGER NOT NULL,
PRIMARY KEY (id)
);
여기서는 다음과 같은 데이터를 입력해 둡니다.
INSERT INTO doc (title, content, latitude, longitude, versionNo) VALUES ('타이틀 1', '콘텐츠 1 입니다.', '37.77493', ' -122.419416', 1);
INSERT INTO doc (title, content, latitude, longitude, versionNo) VALUES ('타이틀 2', '콘텐츠 2 입니다.', '34.701909', '135.494977', 1);
INSERT INTO doc (title, content, latitude, longitude, versionNo) VALUES ('타이틀 3', '콘텐츠 3 입니다.', '-33.868901', '151.207091', 1);
INSERT INTO doc (title, content, latitude, longitude, versionNo) VALUES ('타이틀 4', '콘텐츠 4 입니다.', '51.500152', '-0.113736', 1);
INSERT INTO doc (title, content, latitude, longitude, versionNo) VALUES ('타이틀 5', '콘텐츠 5 입니다.', '35.681137', '139.766084', 1);
매개변수
매개변수 설정 예는 다음과 같습니다.
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=UTF-8
username=hoge
password=fuga
sql=select * from doc
매개변수는 “키=값” 형식입니다. 키에 대한 설명은 다음과 같습니다.
| driver | 드라이버 클래스 이름 |
| url | URL |
| username | DB에 접속할 때의 사용자 이름 |
| password | DB에 접속할 때의 비밀번호 |
| sql | 크롤링 대상을 얻기 위한 SQL 문 |
표: DB용 설정 매개변수 예
스크립트
스크립트 설정 예는 다음과 같습니다.
url="http://SERVERNAME/" + id
host="SERVERNAME"
site="SERVERNAME"
title=title
content=content
cache=content
digest=content
anchor=
content_length=content.length()
last_modified=new java.util.Date()
location=latitude + "," + longitude
latitude=latitude
longitude=longitude
매개변수는 “키=값” 형식입니다. 키에 대한 설명은 다음과 같습니다.
값 측은 Groovy로 작성합니다. 문자열은 큰따옴표로 묶으십시오. 데이터베이스의 열 이름으로 액세스하면 그 값이 됩니다.
| url | URL(사용 중인 환경에 맞춰 데이터에 액세스 가능한 URL을 설정하십시오) |
| host | 호스트 이름 |
| site | 사이트 경로 |
| title | 제목 |
| content | 문서의 콘텐츠(인덱스 대상 문자열) |
| cache | 문서의 캐시(인덱스 대상이 아님) |
| digest | 검색 결과에 표시되는 다이제스트 부분 |
| anchor | 문서에 포함된 링크(일반적으로 지정할 필요가 없음) |
| content_length | 문서의 길이 |
| last_modified | 문서의 최종 수정 날짜 |
표: 스크립트 설정 내용
드라이버
데이터베이스에 접속할 때는 드라이버가 필요합니다. app/WEB-INF/lib 에 jar 파일을 배치하십시오.
CsvDataStore
CSV 파일을 대상으로 한 크롤링에 대해 설명합니다.
예를 들어, /home/taro/csv 디렉터리에 test.csv 파일을 다음과 같은 내용으로 생성해 둡니다. 파일 인코딩은 Shift_JIS로 설정합니다.
1,타이틀 1,테스트1입니다.
2,타이틀 2,테스트2입니다.
3,타이틀 3,테스트3입니다.
4,타이틀 4,테스트4입니다.
5,타이틀 5,테스트5입니다.
6,타이틀 6,테스트6입니다.
7,타이틀 7,테스트7입니다.
8,타이틀 8,테스트8입니다.
9,타이틀 9,테스트9입니다.
매개변수
매개변수 설정 예는 다음과 같습니다.
directories=/home/taro/csv
fileEncoding=Shift_JIS
매개변수는 “키=값” 형식입니다. 키에 대한 설명은 다음과 같습니다.
| directories | CSV 파일이 포함된 디렉터리 (.csv 또는 .tsv) |
| files | CSV 파일 (직접 지정하는 경우) |
| fileEncoding | CSV 파일의 인코딩 |
| separatorCharacter | 구분 문자 |
표: CSV 파일용 설정 매개변수 예
스크립트
스크립트 설정 예는 다음과 같습니다.
url="http://SERVERNAME/" + cell1
host="SERVERNAME"
site="SERVERNAME"
title=cell2
content=cell3
cache=cell3
digest=cell3
anchor=
content_length=cell3.length()
last_modified=new java.util.Date()
매개변수는 “키=값” 형식입니다. 키는 데이터베이스 크롤링의 경우와 동일합니다. CSV 파일 내의 데이터는 cell[숫자]로 보유하고 있습니다(숫자는 1부터 시작). CSV 파일의 셀에 데이터가 존재하지 않는 경우 null이 될 수 있습니다.
EsDataStore
데이터 가져오기 대상이 elasticsearch가 되지만, 기본적인 사용 방법은 CsvDataStore와 동일합니다.
매개변수
매개변수 설정 예는 다음과 같습니다.
settings.cluster.name=elasticsearch
hosts=SERVERNAME:9300
index=logindex
type=data
매개변수는 “키=값” 형식입니다. 키에 대한 설명은 다음과 같습니다.
| settings.* | elasticsearch의 Settings 정보 |
| hosts | 접속할 elasticsearch |
| index | 인덱스 이름 |
| type | 타입 이름 |
| query | 가져올 조건의 쿼리 |
표: elasticsearch용 설정 매개변수 예
스크립트
스크립트 설정 예는 다음과 같습니다.
url=source.url
host="SERVERNAME"
site="SERVERNAME"
title=source.title
content=source.content
digest=
anchor=
content_length=source.size
last_modified=new java.util.Date()
매개변수는 “키=값” 형식입니다. 키는 데이터베이스 크롤링의 경우와 동일합니다. source.*를 통해 값을 가져와서 설정할 수 있습니다.
CsvListDataStore
대량의 파일을 크롤링할 때 사용합니다. 업데이트된 파일의 경로를 기록한 CSV 파일을 배치하고, 지정된 경로만 크롤링하여 크롤링 실행 시간을 단축할 수 있습니다.
경로를 기술할 때의 형식은 다음과 같습니다.
[액션]<구분 문자>[경로]
액션에는 다음 중 하나를 지정합니다.
create: 파일이 생성됨
modify: 파일이 업데이트됨
delete: 파일이 삭제됨
예를 들어, /home/taro/csv 디렉터리에 test.csv 파일을 다음과 같은 내용으로 생성해 둡니다. 파일 인코딩은 Shift_JIS로 설정합니다.
경로는 파일 크롤링에서 크롤링 대상 경로를 지정할 때와 동일한 표기법으로 경로를 기술합니다. 다음과 같이 “file:/[경로]” 또는 “smb://[경로]”로 지정합니다.
modify,smb://servername/data/testfile1.txt
modify,smb://servername/data/testfile2.txt
modify,smb://servername/data/testfile3.txt
modify,smb://servername/data/testfile4.txt
modify,smb://servername/data/testfile5.txt
modify,smb://servername/data/testfile6.txt
modify,smb://servername/data/testfile7.txt
modify,smb://servername/data/testfile8.txt
modify,smb://servername/data/testfile9.txt
modify,smb://servername/data/testfile10.txt
매개변수
매개변수 설정 예는 다음과 같습니다.
directories=/home/taro/csv
fileEncoding=Shift_JIS
매개변수는 “키=값” 형식입니다. 키에 대한 설명은 다음과 같습니다.
| directories | CSV 파일이 포함된 디렉터리 (.csv 또는 .tsv) |
| fileEncoding | CSV 파일의 인코딩 |
| separatorCharacter | 구분 문자 |
표: CSV 파일용 설정 매개변수 예
스크립트
스크립트 설정 예는 다음과 같습니다.
event_type=cell1
url=cell2
매개변수는 “키=값” 형식입니다. 키는 데이터베이스 크롤링의 경우와 동일합니다.
크롤링 대상에 인증이 필요한 경우 다음도 설정해야 합니다.
crawler.file.auth=example
crawler.file.auth.example.scheme=SAMBA
crawler.file.auth.example.username=username
crawler.file.auth.example.password=password