기술 정보
home
채널 소개
home

Text Index 적용 (CTXSYS.CONTEXT)

문서 유형
기술 정보
분야
App개발
키워드
Text Index
CTXSYS.CONTEXT
적용 제품 버전
6F

개요

예시와 함께 Text index 중 하나인 CTXSYS.CONTEXT의 활용을 안내합니다.

방법

1. Test Table 생성 및 Data Insert

SQL> CREATE TABLE BOOK(ID NUMBER, NAME VARCHAR(4000)); Table 'BOOK' created. SQL> INSERT INTO BOOK VALUES(1,'The little boat.'); SQL> INSERT INTO BOOK VALUES(2,'The little yellow digger.'); SQL> INSERT INTO BOOK VALUES(3,'The magic pasta pot : an old tale.'); SQL> INSERT INTO BOOK VALUES(4,'The man who was thursday.'); SQL> INSERT INTO BOOK VALUES(5,'The pear in the pear tree.'); SQL> INSERT INTO BOOK VALUES(6,'The rainbow fish.'); SQL> INSERT INTO BOOK VALUES(7,'The story about Ping.'); SQL> COMMIT; Commit completed.
SQL
복사

2. CTXSYS.CONTEXT Index 생성

SQL> CREATE INDEX CONTEXT_IDX_BOOK ON BOOK(name) INDEXTYPE IS CTXSYS.CONTEXT; Index 'CONTEXT_IDX_BOOK' created.
SQL
복사

3. TEXT 조회

CONTAINS() 이용해 text를 조회합니다.
SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'little') > 0 ORDER BY ID; ID NAME ---------- ---------------------------------------- 1 The little boat. 2 The little yellow digger. 2 rows selected. 2 rows selected.
SQL
복사

제약사항 (조회 불가)

단어 일부 적용 시 단어 전체를 입력해야 조회 가능합니다.
-- 예: little 조회 시, 일부 스펠링 입력 시 조회 불가 SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'lit') > 0 ORDER BY ID; 0 row selected.
SQL
복사
일반적인 영어 단어 정관사, Be 동사와 같은 일반적인 영어 단어는 조회되지 않습니다.
SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'The') > 0 ORDER BY ID; 0 row selected. SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'was') > 0 ORDER BY ID; 0 row selected.
SQL
복사
두글자 단어 in, an 과 같은 두 글자로 이뤄진 단어는 조회되지 않습니다.
SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'in') > 0 ORDER BY ID; 0 row selected. SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'an') > 0 ORDER BY ID; 0 row selected.
SQL
복사
신규로 Insert 된 data
-- Data 추가 Insert SQL> INSERT INTO BOOK VALUES(8,'The little prince.'); 1 row inserted. SQL> COMMIT; Commit completed. -- Data 조회 SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'little') > 0 ORDER BY ID; ID NAME ---------- ---------------------------------------- 1 The little boat. 2 The little yellow digger. 2 rows selected. -- 신규 Insert 된 Data는 조회 불가
SQL
복사
참고
신규로 Insert된 data도 조회하기 위해서는 CTX_DDL.SYNC_INDEX()를 이용해 Index Sync를 맞춰줍니다.
SQL> EXEC CTX_DDL.SYNC_INDEX('CONTEXT_IDX_BOOK'); PSM completed. -- 새로 Insert된 data 조회 SQL> SELECT * FROM BOOK WHERE CONTAINS(name, 'little') > 0 ORDER BY ID; ID NAME ---------- ---------------------------------------- 1 The little boat. 2 The little yellow digger. 8 The little prince. 3 rows selected.
SQL
복사