문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣTibero 7.2.1.
문서번호ㅣTADTI168
개요
CONTEXT 인덱스의 생성/삭제 방법과 인덱스와 관련된 객체에 대해 설명합니다.
Tibero TEXT는 텍스트로 구성된 데이터에 대한 질의 성능을 향상시킨 기능입니다.
Tibero TEXT에서는 책 본문과 같은 큰 일관성있는 문서를 인덱싱하는 CONTEXT 인덱스를 제공하고 있습니다.
방법
인덱스 생성
사용법
CREATE INDEX idx_name on [sch_name.]tbl_name INDEXTYPE IS CTXSYS.CONTEXT
parameters('preferences_class_name user_defined_preference_name sync(option)')| 항목 | 설명 |
|---|---|
| idx_name | 생성할 CONTEXT 인덱스의 이름 |
| sch_name | 인덱스를 생성할 대상 테이블의 소유자를 설정 |
| tbl_name | 인덱스를 생성할 대상 테이블을 설정 |
| CTXSYS.CONTEXT | CONTEXT 인덱스로 생성함을 의미하는 예약어 |
| parameters | CONTEXT 인덱스를 생성할 때 사용할 설정을 지정하는 예약어 |
| preferences_class_name | CONTEXT 인덱스를 생성할 때 설정을 지정할 클래스 |
| user_defined_prefer ence_name | 지정된 CLASS에 대해 생성한 PREFERENCE |
| sync(option) |
CONTEXT 인덱스의 자동 동기화를 위해 사용됨
|
예제
SQL> create table t(name varchar(400), value varchar(1000));
Table 'T' created.
SQL> create index t_idx on t(name) indextype is ctxsys.context
2 parameters('sync(on commit)');
Index 'T_IDX' created.
SQL> create index t_idx2 on t(value) indextype is ctxsys.context
2 parameters('sync(every sysdate+1/24/60)');
Index 'T_IDX2' created.
#주의
#TEXT 인덱스 관련 쿼리를 실행할 때 내부적으로 'TEXT'라는 이름의 패키지를 사용하기 때문에 테이블 이름을 'TEXT'로 지정하지 않습니다.참고
PREFERENCE, CLASS 등 인덱스의 설정과 관련된 자세한 내용은 “TEXT Indexing Elements”를 참고합니다.
인덱스 제거
CONTEXT 인덱스를 제거하기 위한 SQL은 다른 인덱스의 경우와 동일합니다.
사용법
DROP INDEX index_name| 항목 | 설명 |
|---|---|
| index_name | 삭제할 TEXT 인덱스의 이름 |
예제
SQL> drop index t_idx;
Index 'T_IDX' dropped.
인덱스 관련 객체
CONTEXT 인덱스를 생성할 때 다음과 같은 객체가 생성됩니다.
| 항목 | 객체 타입 | 설명 |
|---|---|---|
| DR$index_name$I | 테이블 | 컬럼 텍스트의 토큰이 저장되는 테이블 |
| DR$index_name$X | 인덱스 | 토큰 테이블의 토큰 컬럼과 rowid 컬럼에 걸리는 인덱스 |
| DR$index_name$K | 테이블 | 토큰 테이블의 document ID가 저장되는 테이블 |
인덱스 제약
CONTEXT 인덱스는 다음과 같은 경우에 제약을 가집니다.
여러 컬럼에 대해 하나의 CONTEXT 인덱스를 생성할 수 없습니다.
CONTEXT 인덱스는 글로벌 파티셔닝(Global Partitioning)을 지원하지 않습니다. 다만, 글로벌 논파티션드(Global Non-Partitioned) 인덱스는 생성할 수 있습니다.
CONTEXT 인덱스는
BASIC_LEXER,CHINESE_LEXER를 사용할 경우VARCHAR2타입과CLOB타입 컬럼에 대해서만 생성할 수 있습니다.CONTEXT 인덱스는
JAPANESE_LEXER를 사용할 경우VARCHAR2타입 컬럼에 대해서만 생성할 수 있습니다.
Context Index Preference
STORAGE
TEXT 인덱스를 생성할 때 생성되는 인덱스와 테이블의 저장 공간을 지정합니다.
LEXER
TEXT 인덱스 생성 시 사용되는 LEXER의 설정을 지정합니다.
1) BASIC LEXER
- MIXED_CASE : 대소문자를 구별하여 인덱싱할지 여부를 결정합니다. TRUE인 경우 대소문자를 구별하여 인덱싱합니다.
- BASE_LETTER : Umlaut, acute accent와 같은 base letter를 구분하여 인덱싱할지 여부를 설정합니다. TRUE인 경우 이러한 문자를 구분하지 않고 인덱싱합니다.
Umlaut : 후속 음절의 영향으로 발음이 변하는 현상
Acute accent : 예) fiancé의 ‘ 기호
- WHITESPACE : 지정한 문자를 whitespace로 인식하여 punctuation(구두점) 및 newline 문자와 결합해 sentence(문장) 및 paragraph(문단)의 구분자로 사용합니다. sentence 및 paragraph 검색 시 활용됩니다.
기본값은 공백(space) 또는 탭(tab) 문자이며, 사용자가 whitespace를 지정한 경우 기본값 외에도 지정한 문자가 whitespace로 인식됩니다.
속성값 : 문자열, 기본값 : 공백 또는 탭 문자
2) JAPANESE_LEXER : 일본어 텍스트에서 토큰을 생성하기 위한 LEXER입니다.
3) CHINESE_LEXER : 중국어 텍스트에서 토큰을 생성하기 위한 LEXER입니다.
UTF8, GBK character set에서만 지원됩니다.
CTXCAT 인덱스는 사용할 수 없으며, CONTEXT 인덱스만 사용할 수 있습니다.
4) WORLD_LEXER : 여러 언어가 포함된 문서에서 토큰을 생성하기 위한 LEXER로, 언어를 자동으로 감지하여 토큰을 생성합니다.
UTF8 character set에서만 지원됩니다.
WORDLIST TEXT
인덱스를 생성하는 경우 생성되는 토큰에 관련된 설정을 한다.
STOPLIST TEXT
인덱스에서 제외한 단어를 지정한다.
DATASTORE TEXT
인덱스를 생성하는 경우 문서 저장 방법을 지정한다.
FILTER
문서를 색인하기 위해 필터링 되는 방법을 지정
SECTION GROUP
문서를 여러 섹션으로 나누는 기준을 정의