TEXT 인덱스

본 장에서는 CTXCAT 인덱스와 CONTEXT 인덱스의 생성/삭제 방법과 인덱스와 관련된 객체에 대해 설명합니다.

Tibero TEXT는 텍스트로 구성된 데이터에 대한 질의 성능을 향상시킨 기능입니다.

Tibero TEXT에서는 책 제목, 온라인 쇼핑몰의 상품명 등 비교적 간단한 정보를 담고 있는 컬럼에서 검색어 질의를 빠르게 처리하기 위한 CTXCAT 인덱스와 책 본문과 같은 큰 일관성있는 문서를 인덱싱하는 CONTEXT 인덱스를 제공하고 있습니다.

CTXCAT 인덱스

CTXCAT 인덱스의 생성/제거, 관련 객체 제약 사항에 대해서 설명합니다.

인덱스 생성

CTXCAT 인덱스 생성 방법은 다음과 같습니다.

사용법

CREATE INDEX idx_name on [sch_name.]tbl_name (col_name) CTXCATINDEX 
[PARAMETERS('preferences_class_name user_defined_preference_name')]
항목
설명

idx_name

생성할 CTXCAT 인덱스의 이름이다.

sch_name

인덱스를 생성할 대상 테이블의 소유자를 설정한다.

tbl_name

인덱스를 생성할 대상 테이블을 설정한다.

col_name

인덱스를 생성할 대상 column VARCAHR2 TYPE이어야 한다.

CTXCATINDEX

CTXCAT 인덱스로 생성함을 의미하는 예약어이다.

parameters

CTXCAT 인덱스를 생성할 때 사용할 설정을 지정하는 예약어이다.

preferences_class_name

CTXCAT 인덱스를 생성할 때 설정을 지정할 클래스이다.

user_defined_prefer

ence_name

위에서 지정된 CLASS에 대해 생성한 PREFERENCE이다.

참고

PREFERENCE, CLASS 등 인덱스의 설정과 관련된 자세한 내용은 “TEXT Indexing Elements”를 참고합니다.

예제

SQL>create table t(name varchar(400)); 

Table 'T' created.

SQL>create index t_idx on t(name) ctxcatindex;

Index 'T_IDX' created.

인덱스 제거

CTXCAT 인덱스, CONTEXT 인덱스를 제거하기 위한 SQL은 다른 인덱스의 경우와 동일합니다.

사용법

DROP INDEX index_name
항목
설명

index_name

삭제할 TEXT 인덱스의 이름이다.

예제

SQL>drop index t_idx;

Index 'T_IDX' dropped.

인덱스 관련 객체

CTXCAT 인덱스를 생성할 때 다음과 같은 객체가 생성됩니다.

객체 이름
객체 타입
설명

DR$index_name$I

테이블

컬럼 텍스트의 토큰이 저장되는 테이블이다.

DR$index_name$R

인덱스

토큰 테이블의 rowid 컬럼에 걸리는 인덱스이다.

DR$index_name$X

인덱스

토큰 테이블의 토큰 컬럼과 rowid 컬럼에 걸리는 인덱스이다.

DR$index_name_TRG_I

트리거

CTXCAT 인덱스가 걸린 컬럼에 데이타가 입력될 때 입력 데이터를 토큰 테이블에 입력하기 위한 트리거이다.

DR$index_name_TRG_D

트리거

CTXCAT 인덱스가 걸린 컬럼에 데이타가 삭제될 때 해당 토큰을 삭제하기 위한 트리거이다.

DR$index_name_TRG_U

트리거

CTXCAT 인덱스가 걸린 컬럼에 데이타가 수정될 때 해당 토큰을 수정하기 위한 트리거이다.

인덱스 제약

CTXCAT 인덱스는 다음과 같은 경우에 제약을 가집니다.

  • 여러 컬럼에 대해 하나의 CTXCAT 인덱스를 설정할 수 없습니다.

  • TEXT 인덱스는 파티션이 될 수 없습니다.

  • TEXT 인덱스는 VARCHAR2 타입인 컬럼에 대해서만 생성할 수 있습니다.


CONTEXT 인덱스

CONTEXT 인덱스의 생성/제거, 관련 객체 제약 사항에 대해서 설명합니다.

인덱스 생성

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 인덱스의 자동 동기화를 위해 사용 된다. 다음과 같이 on commit, every 2가지 방법이 있다.

  • ON COMMIT : 커밋 후 인덱스를 동기화한다. 동기화가 끝날 때 까지 커밋이 리턴되지 않는다.

  • EVERY : interval-string 값으로 지정된 일정한 간격으로 인덱스를 자 동으로 동기화 한다. EVERY를 사용하는 동기화는 작성자가 create job 특권이 있어야 한다.

참고

PREFERENCE, CLASS 등 인덱스의 설정과 관련된 자세한 내용은 “TEXT Indexing Elements”를 참고합니다.

예제

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 
parameters('sync(on commit)');

Index 'T_IDX' created.

SQL>create index t_idx2 on t(value) indextype is ctxsys.context 
parameters('sync(every sysdate+1/24/60)');

Index 'T_IDX2' created.

인덱스 제거

CTXCAT 인덱스, 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 인덱스는 글로벌 파티션이 될 수 없습니다.

  • CONTEXT 인덱스는 BASIC_LEXER, CHINESE_LEXER의 경우 VARCHAR2 타입과 CLOB 타입인 컬럼에 대해서만 생성할 수 있습니다.

  • CONTEXT 인덱스는 JAPANESE_LEXER의 경우 VARCHAR2 타입인 컬럼에 대해서만 생성할 수 있습니다.

Last updated