다음을 통해 공유


CREATE FULLTEXT INDEX(Transact-SQL)

업데이트: 2006년 12월 12일

데이터베이스 테이블 또는 인덱싱된 뷰에서 하나 이상의 열에 대한 전체 텍스트 인덱스를 만듭니다. 테이블 또는 인덱싱된 뷰당 전체 텍스트 인덱스 하나만 허용됩니다. 기본적으로 데이터베이스를 만들 때 전체 텍스트 검색에 데이터베이스를 사용할 수 있습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

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]}}
     ]

인수

  • table_name
    전체 텍스트 인덱스에 있는 열을 포함하는 테이블 또는 인덱싱된 뷰의 이름입니다.
  • column_name
    전체 텍스트 인덱스에 있는 열 이름입니다. 전체 텍스트 검색을 위해 char, varchar, nchar, nvarchar, text, ntext, image, xmlvarbinary 유형의 열 하나에 대해 인덱스를 만듭니다.
  • TYPE COLUMN type_column_name
    column_name 문서 유형을 보유하는 table_name의 열 이름입니다.

    type_column_namechar, nchar, varchar 또는 nvarchar 유형 중 하나여야 합니다. column_name의 열이 varbinary(max) 또는 image 유형인 경우에만 type_column_name을 지정하십시오. 그렇지 않으면 SQL Server에서 오류가 반환됩니다.

    자세한 내용은 전체 텍스트 검색 필터를 참조하십시오.

  • LANGUAGE language_term
    column_name에 저장된 데이터의 언어입니다.

    language_term은 옵션이며 언어의 LCID(로캘 ID)에 해당하는 문자열, 정수 또는 16진수 값으로 지정할 수 있습니다. language_term을 지정하면 해당 언어는 char, nchar, varchar, nvarchar, textntext 열에 저장된 데이터를 인덱싱하는 데 사용됩니다. 열에 대한 전체 텍스트 조건자의 일부로 language_term을 지정하지 않으면 이 언어는 쿼리 시에 기본 언어로 사용됩니다. 값을 지정하지 않으면 SQL Server 인스턴스의 기본 언어가 사용됩니다.

    언어를 알 수 없거나 column_name에 저장할 언어가 여러 가지이며 열이 BLOB 또는 XML 데이터 형식이 아닌 경우에는 중립(0x0) 언어를 사용하십시오. 자세한 내용은 전체 텍스트 검색에 대한 국가별 고려 사항을 참조하십시오.

    Microsoft SQL Server 인스턴스의 기본 전체 텍스트 언어에 대한 정보에 액세스하려면 sp_configure 저장 프로시저를 사용하십시오. 자세한 내용은 sp_configure(Transact-SQL)default full-text language 옵션을 참조하십시오.

    문자열로 지정하는 경우 language_termsyslanguages 시스템 테이블의 alias 열 값에 해당합니다. 문자열은 **'language_term'**과 같이 작은따옴표로 묶어야 합니다. 정수로 지정하는 경우 language_term은 언어를 식별하는 실제 LCID입니다. 16진수 값으로 지정하는 경우 language_term은 0x로 시작하는 LCID의 16진수 값입니다. 16진수 값은 선행 0을 포함하여 8자리 수를 초과할 수 없습니다.

    값이 DBCS(더블바이트 문자 집합) 형식인 경우 SQL Server는 값을 유니코드로 변환합니다.

    단어 분리기 및 형태소 분석기와 같은 리소스는 language_term으로 지정된 언어에 사용해야 합니다. 이러한 리소스가 지정된 언어를 지원하지 않는 경우 SQL Server에서 오류를 반환합니다.

    비 BLOB 및 비 XML 열이 여러 언어로 된 텍스트 데이터를 포함하거나 열에 저장된 텍스트의 언어를 알 수 없는 경우 언어 중립적인 리소스(0x0)를 사용합니다. XML 유형 또는 BLOB 유형의 열로 저장된 문서의 경우 인덱싱 시에 문서 내의 언어 인코딩이 사용됩니다. 예를 들어 XML 열에서는 XML 문서의 xml:lang 특성이 언어를 식별합니다. 쿼리 시에 language_term이 전체 텍스트 쿼리의 일부로 지정되지 않은 경우 language_term에 지정된 이전 값이 전체 텍스트 쿼리의 기본 언어로 사용됩니다.

  • ,... n
    전체 텍스트 인덱싱에 여러 열을 지정할 수 있음을 나타냅니다. 여러 열을 지정하는 경우 각 열은 쉼표로 구분하십시오.
  • KEY INDEX index_name
    table_name의 고유 키 인덱스 이름입니다. KEY INDEX는 고유하며 단일 키의 Null을 허용하지 않는 열이어야 합니다. 전체 텍스트 고유 키에 사용 가능한 가장 작은 고유 키 인덱스를 선택합니다. 최상의 성능을 위해 CLUSTERED 인덱스를 사용하는 것이 좋습니다.
  • ON fulltext_catalog_name
    전체 텍스트 인덱스에 사용되는 전체 텍스트 카탈로그입니다. 카탈로그는 데이터베이스에 이미 있어야 합니다. 이 절은 옵션입니다. 지정하지 않으면 기본 카탈로그가 사용됩니다. 기본 카탈로그가 없으면 SQL Server에서 오류를 반환합니다.

    fulltext_catalog_name의 파일 그룹 또는 기본 전체 텍스트 카탈로그(카탈로그를 지정하지 않은 경우)는 READONLY 또는 OFFLINE이 아니어야 합니다. 그렇지 않으면 SQL Server 에서 오류를 반환합니다.

  • WITH CHANGE_TRACKING {MANUAL | AUTO | OFF [ **,**NO POPULATION]}
    SQL Server에서 인덱싱된 데이터의 모든 변경 내용을 유지할지 여부를 지정합니다. WRITETEXT 및 UPDATETEXT를 통한 데이터 변경 내용은 변경 내용 추적으로 처리되지 않습니다.

    • Manual
      변경 추적 로그를 SQL Server 에이전트를 사용하여 일정에 따라 전파할 것인지 또는 사용자가 수동으로 전파할 것인지 지정합니다.
    • AUTO
      관련 테이블에서 데이터가 수정되면 SQL Server에서 전체 텍스트 인덱스를 자동으로 업데이트하도록 지정합니다. AUTO가 기본값입니다.

      참고 변경 내용을 자동으로 전파할 수 있지만 이러한 변경 내용이 전체 텍스트 인덱스에 즉시 반영되지 않을 수도 있습니다. 전체 텍스트 인덱싱 프로세스 모니터링 및 전체 텍스트 인덱싱 관련 문제 진단에 사용되는 속성에 대한 자세한 내용은 Transact-SQL 함수를 사용하여 전체 텍스트 속성 값 얻기를 참조하십시오.

    • OFF [ **,**NO POPULATION]
      SQL Server에서 인덱싱된 데이터의 변경 내용 목록을 유지하지 않도록 지정합니다.

      NO POPULATION 옵션은 CHANGE_TRACKING이 OFF일 경우에만 사용할 수 있습니다. NO POPULATION을 지정하면 SQL Server에서 인덱스를 만든 후 인덱스를 채우지 않습니다. 사용자가 START FULL 또는 INCREMENTAL POPULATION 절과 함께 ALTER FULLTEXT INDEX 명령을 실행한 후에만 인덱스가 채워집니다. NO POPULATION을 지정하지 않으면 SQL Server는 생성된 인덱스를 완전히 채웁니다.

사용 권한

사용자는 전체 텍스트 카탈로그에 대한 REFERENCES 권한과 뷰 테이블에 대한 ALTER 권한이 있거나 sysadmin 고정 서버 역할, db_owner 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.

다음 예에서는 HumanResources.JobCandidate 테이블에 대한 전체 텍스트 인덱스를 만듭니다.

USE AdventureWorks;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand;
GO

참고 항목

참조

ALTER FULLTEXT INDEX(Transact-SQL)
DROP FULLTEXT INDEX(Transact-SQL)
GRANT(Transact-SQL)

관련 자료

전체 텍스트 검색

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

새로운 내용
  • 전체 텍스트 인덱스도 인덱싱된 뷰에 적용할 수 있다는 설명을 추가했습니다.
  • TYPE COLUMN 절에 대한 자세한 설명을 위해 필터 항목에 대한 링크를 추가했습니다.