문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣTibero 7 (DB 7.2.4)
문서번호ㅣTADTI224
개요
Context Index는 특정한 맥락이나 주제에 관한 정보를 쉽게 찾을 수 있도록 구성된 인덱스이다. 문서나 데이터베이스의 검색 기능을 향상시키기 위해 사용합니다.
이에 대해 Context Index 사용 예제를 작성하였습니다.
테스트 환경
- DB : Tibero 7 (DB 7.2.4)
- OS : Rocky Linux 9.6
방법
예제 시나리오
1. CTXSYS INDEX
# 데이터 입력
CREATE TABLE BOOK(ID NUMBER, NAME VARCHAR(4000));
INSERT INTO BOOK VALUES(2,'The little yellow digger.');
INSERT INTO BOOK VALUES(3,'The magic pasta pot : an old tale.');
INSERT INTO BOOK VALUES(4,'The man who was thursday.');
INSERT INTO BOOK VALUES(5,'The pear in the pear tree.');
INSERT INTO BOOK VALUES(6,'The rainbow fish.');
INSERT INTO BOOK VALUES(7,'The story about Ping.');
commit;
# CTXSYS Index 생성
CREATE INDEX CONTEXT_IDX_BOOK ON BOOK(name) INDEXTYPE IS CTXSYS.CONTEXT;
# little 이 포함 된 데이터 조회 시 2건의 데이터가 조회 됨
SELECT * FROM BOOK WHERE CONTAINS(name, 'little') > 0 ORDER BY ID;
ID NAME
----- ----------------------------------------
1 The little boat.
2 The little yellow digger.
# 단어의 일부분으로 조회 시 조회가 되지 않음
SELECT * FROM BOOK WHERE CONTAINS(name, 'lit') > 0 ORDER BY ID;
0 row selected.
# Text Index 사용 시 The, who , in 은 조회되지 않음
SELECT * FROM BOOK WHERE CONTAINS(name, 'The') > 0 ORDER BY ID;
0 row selected.
SELECT * FROM BOOK WHERE CONTAINS(name, 'who') > 0 ORDER BY ID;
0 row selected.
SELECT * FROM BOOK WHERE CONTAINS(name, 'in') > 0 ORDER BY ID;
0 row selected.
# 데이터 추가 및 동기화 (CTXSYS INDEX는 데이터 추가 후 동기화 과정을 수행해야 함)
INSERT INTO BOOK VALUES(8,'The little prince.');
EXEC CTX_DDL.SYNC_INDEX('CONTEXT_IDX_BOOK');단어 전체를 검색해야 하며, the, in, on, for, who , is, of ... 등과 같은 단어는 STOP LIST에 포함되어 조회가 되지 않습니다.
2. CTXCAT INDEX
# 데이터 입력
CREATE TABLE BOOK(ID NUMBER, NAME VARCHAR(4000));
INSERT INTO BOOK VALUES(2,'The little yellow digger.');
INSERT INTO BOOK VALUES(3,'The magic pasta pot : an old tale.');
INSERT INTO BOOK VALUES(4,'The man who was thursday.');
INSERT INTO BOOK VALUES(5,'The pear in the pear tree.');
INSERT INTO BOOK VALUES(6,'The rainbow fish.');
INSERT INTO BOOK VALUES(7,'The story about Ping.');
# CTXCAT INDEX 생성
CREATE INDEX CTXCATINDEX_BOOK ON BOOK(NAME) CTXCATINDEX;
# litt 로 시작하는 데이터 검색
SELECT * FROM BOOK WHERE CATSEARCH(name, 'litt*', NULL) = 0 ORDER BY ID;
ID NAME
----- ----------------------------------------
1 The little boat.
2 The little yellow digger.
CTXSYS INDEX와 CTXCAT INDEX 비교
| 항목 | CTXSYS (CONTEXT Index) | CTXCAT (CATALOG Index) |
|---|---|---|
| 용도 | 대용량 문서, 전문(full-text) 검색 | 상품, 게시글 등 구조화된 데이터 빠른 검색 |
| 기능 수준 | 최고(고급 옵션, Lexer/Stoplist/Storage 등 모두 지원) | 단순 구조, 빠르고 가벼움 |
| 지원 검색 방식 | 문장 검색, 단어 검색, Bool 연산, 언어 처리 | LIKE, 정확 매칭, 숫자/날짜 조건 처리 |
| 색인 방식 | Inverted Index (전문 색인) | Inverted Index + Rowid Cache |
| 자동 동기화 | ❌ 기본은 manual sync 필요 | ⭕ 지원(SYNC 자동됨) |
| Stopword 사용 | YES | YES |
| Section, Theme 분석 | 지원(고급 기능) | 지원 안 함 |
| 전문적인 검색 엔진 용도 | 적합 | 부적합 |
| 성능 | 복잡한 기능 → 무거움 | 가볍고 빠름 |