본문 바로가기

Database/MS-SQL

DB 전체 텍스트 검색 서비스

반응형

전체 텍스트 검색 서비스(Full Text Search Service)는 SQL Server 외부기능임
긴 문장으로 구성된 열의 내용을 검색할 때 외부 인덱스를 사용해서 빠른 시간에
검색하는 것


전체 텍스트 검색 서비스가 작동중이여야한다

SQL2005에서 




윈도우 관리도구 - 서비스 에서 보기



개요
신문기사와 같이 , 텍스트로 이루어진 문자열 데이터의 내용을 가지고 생성한 인덱스를 말함

SQL Server의 인덱스와 차이점
전체 텍스트 검색 엔진(MSFTESQL)이 생성하는 특수 토큰 기반 기능의 인덱스
외부 파일로 저장됨
테이블 당 하나만 생성
char, varchar, nvarchar, text, ntext 등의 열에만 생성이 가능


전체 텍스트 인덱스

생성 구문
CREATE FULLTEXT INDEX ON table_name
     [(column_name [TYPE COLUMN type_column_name] 
          [LANGUAGE language_term] [,...n])]
     KEY INDEX index_name    [ON fulltext_catalog_name]
     [WITH        {CHANGE_TRACKING {MANUAL | AUTO | OFF 
                       [, NO POPULATION]}}     ]

전체 텍스트 카탈로그

개요

전체 텍스트 인덱스가 저장되는 저장소. (폴더와 비슷한 개념)
전체 텍스트 인덱스가 생성되기 전에 생성해 놓아야 함.

생성 구문
CREATE FULLTEXT CATALOG catalog_name
     [ON FILEGROUP filegroup ]
     [IN PATH 'rootpath']
     [WITH <catalog_option>]
     [AS DEFAULT]
     [AUTHORIZATION owner_name ]

전체 텍스트 인덱스 채우기

개요
전체 텍스트 인덱스를 생성하고 관리하는 것을 말함

채우기 방법
전체 채우기
처음 전체 텍스트 인덱스를 생성할 때 지정한 열의 모든 데이터 행에 대해서 인덱스를 생성하는 것을 말한다.

변경 내용 추적 기반 채우기
전체 채우기를 수행한 이후에, 변경된 내용을 채우는 것을 말한다. 

증분 타임스탬프 기반 채우기
증분 채우기는 마지막 채우기 후 추가, 삭제 ,수정된 행에 대해서 전체 텍스트 인덱스를 업데이트한다. 




전체 텍스트 검색을 위한 쿼리

개요
일반 SELECT문의 WHERE절에 키워드를 사용하면 됨.

쿼리문 예제

CONTAINS (ARTICLE 열에 전체텍스트 인덱스가 생성되었다고 가정)
정확히 ‘영화’단어가 들어간 기사를 찾는 구문
SELECT * FROM newspaper 
  WHERE CONTAINS(article, N'영화')

FREETEXT
‘영화에 출연한 배우’와 비슷한 단어를 포함한 것을 검색
SELECT * FROM newspaper 
  WHERE FREETEXT(article, N'영화에 출연한 배우')

CONTAINSTABLE
‘영화’의 내용이 포함된 인덱스의 키와 해당 순위 확인
SELECT * FROM 
CONTAINSTABLE(newspaper, article, N'영화')