다음을 통해 공유


테이블 및 열에 대한 의미 체계 검색 사용

적용 대상: SQL Server

문서 또는 텍스트가 들어 있는 선택한 열에서 통계 의미 체계 인덱싱을 사용하거나 사용하지 않도록 설정하는 방법에 대해 설명합니다.

통계 의미 체계 검색은 전체 텍스트 검색에서 만든 인덱스를 사용하고 추가 인덱스를 만듭니다. 전체 텍스트 검색에 대한 이러한 종속성으로 인해 새 전체 텍스트 인덱스 또는 기존 전체 텍스트 인덱스 변경 시 새 의미 체계 인덱스가 생성됩니다. 이 문서에 설명된 대로 Transact-SQL 문을 사용하거나 SQL Server Management Studio의 전체 텍스트 인덱싱 마법사 및 기타 대화 상자를 사용하여 새 의미 체계 인덱스를 만들 수 있습니다.

의미 체계 인덱스 만들기

의미 체계 인덱스를 만들기 위한 요구 사항 및 제한 사항

  • 테이블 및 인덱싱된 뷰를 포함하여 전체 텍스트 인덱싱에 지원되는 데이터베이스 개체에 대한 인덱싱을 만들 수 있습니다.

  • 특정 열에 대해 의미 체계 인덱싱을 사용하도록 설정하려면 다음 필수 구성 요소가 있어야 합니다.

    • 데이터베이스에 대한 전체 텍스트 카탈로그가 있어야 합니다.

    • 테이블에 전체 텍스트 인덱스가 있어야 합니다.

    • 선택한 열은 전체 텍스트 인덱스에 참여해야 합니다.

    이러한 모든 요구 사항을 동시에 만들고 사용하도록 설정할 수 있습니다.

  • 전체 텍스트 인덱싱이 지원되는 데이터 형식의 열에 대한 의미 체계 인덱스를 만들 수 있습니다. 자세한 내용은 전체 텍스트 인덱스 만들기 및 관리를 참조하세요.

  • varbinary(max) 열에 대해 전체 텍스트 인덱싱이 지원되는 문서 종류를 지정할 수 있습니다. 자세한 내용은 이 문서의 방법: 인덱스할 수 있는 문서 유형 결정하기를 참조하세요.

  • 의미 체계 인덱싱은 선택한 열에 대한 두 가지 유형의 인덱스(핵심 구의 인덱스 및 문서 유사성 인덱스)를 만듭니다. 의미 체계 인덱싱을 사용하도록 설정할 때는 한 가지 유형의 인덱스 또는 다른 형식만 선택할 수 없습니다. 그러나 이러한 두 인덱스를 독립적으로 쿼리할 수 있습니다. 자세한 내용은 의미 체제 검색으로 문서에서 핵심 구문 찾기의미 체제 검색으로 유사 및 관련 문서 찾기를 참조하세요.

  • 의미 체계 인덱스에 대해 LCID를 명시적으로 지정하지 않으면 기본 언어 및 관련 언어 통계만 의미 체계 인덱싱에 사용됩니다.

  • 언어 모델을 사용할 수 없는 열에 대한 언어를 지정하면 인덱스 만들기가 실패하고 오류 메시지가 반환됩니다.

전체 텍스트 인덱스가 없을 때 의미 체계 인덱스 만들기

CREATE FULLTEXT INDEX 문을 사용하여 새 전체 텍스트 인덱스를 만들 때 열 정의의 일부로 STATISTICAL_SEMANTICS를 지정하여 열 수준에서 의미 체계 인덱싱을 사용하도록 설정할 수 있습니다. 전체 텍스트 인덱싱 마법사를 사용하여 새 전체 텍스트 인덱스를 만들 때 의미 체계 인덱싱을 사용하도록 설정할 수도 있습니다.

Transact-SQL을 사용하여 새 의미 체계 인덱스 만들기

CREATE FULLTEXT INDEX 문을 호출하고 의미 체계 인덱스 만들기를 원하는 각 열에 대해 STATISTICAL_SEMANTICS를 지정합니다. 이 문의 모든 옵션에 대한 자세한 내용은 CREATE FULLTEXT INDEX(Transact-SQL)를 참조하세요.

예제 1: 고유 인덱스, 전체 텍스트 인덱스 및 의미 체계 인덱스 만들기

다음 예제에서는 기본 전체 텍스트 카탈로그인 ft를 만듭니다. 그런 다음 이 예제는 AdventureWorks2022 샘플 데이터베이스의 HumanResources.JobCandidate 테이블 JobCandidateID 열에 고유 인덱스를 생성합니다. 이 고유 인덱스는 전체 텍스트 인덱스 키 열로 필요합니다. 그런 다음 Resume 열에 대한 전체 텍스트 인덱스와 의미 체계 인덱스를 만듭니다.

CREATE FULLTEXT CATALOG ft AS DEFAULT
GO

CREATE UNIQUE INDEX ui_ukJobCand
    ON HumanResources.JobCandidate(JobCandidateID)
GO

CREATE FULLTEXT INDEX ON HumanResources.JobCandidate
    (Resume
        Language 1033
        Statistical_Semantics
    )
    KEY INDEX JobCandidateID
    WITH STOPLIST = SYSTEM
GO

예제 2: 인덱스 채우기가 지연된 여러 열에 전체 텍스트 및 의미 체계 인덱스 만들기

다음 예에서는 documents_catalog 예제 데이터베이스에 전체 텍스트 카탈로그 AdventureWorks2022를 만듭니다. 그런 다음 이 새 카탈로그를 사용하는 전체 텍스트 인덱스를 만듭니다. 전체 텍스트 인덱스는 Production.Document 테이블의 Title, DocumentSummaryDocument 열에 만들어지지만 의미 체계 인덱스는 Document 열에만 만들어집니다. 이 전체 텍스트 인덱스는 새로 만든 전체 텍스트 카탈로그 및 기존의 고유 키 인덱스 PK_Document_DocumentID를 사용합니다. 권장한 대로 이 인덱스 키는 정수 열 DocumentID에 생성됩니다. 이 예에서는 열의 데이터 언어인 영어의 LCID를 1033으로 지정합니다.

이 예에서도 채우기 작업을 수행하지 않고 변경 내용 추적이 해제되도록 지정하며. 나중에 사용률이 낮은 시간에 ALTER FULLTEXT INDEX 문을 사용하여 새 인덱스에 대해 전체 채우기를 시작하고 변경 내용 자동 추적을 사용하도록 설정합니다.

CREATE FULLTEXT CATALOG documents_catalog
GO

CREATE FULLTEXT INDEX ON Production.Document
    (
    Title
        Language 1033,
    DocumentSummary
        Language 1033,
    Document
        TYPE COLUMN FileExtension
        Language 1033
        Statistical_Semantics
    )
    KEY INDEX PK_Document_DocumentID
        ON documents_catalog
        WITH CHANGE_TRACKING OFF, NO POPULATION
GO

다음과 같이 나중에 사용률이 낮은 시간에 인덱스가 채워집니다.

ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO
GO

SQL Server Management Studio를 사용하여 새 의미 체계 인덱스 만들기

전체 텍스트 인덱싱 마법사를 실행하고 테이블 열 선택 페이지에서 의미 체계 인덱스를 만들 각 열에 대해 통계 의미 체계 를 사용하도록 설정합니다. 전체 텍스트 인덱싱 마법사를 시작하는 방법에 대한 정보를 비롯한 자세한 내용은 전체 텍스트 인덱싱 마법사 사용을 참조 하세요.

기존 전체 텍스트 인덱스가 있을 때 의미 체계 인덱스 만들기

ALTER FULLTEXT INDEX 문을 사용하여 기존 전체 텍스트 인덱스를 변경할 때 의미 체계 인덱싱을 추가할 수 있습니다. SQL Server Management Studio의 다양한 대화 상자를 사용하여 의미 체계 인덱싱을 추가할 수도 있습니다.

Transact-SQL을 사용하여 의미 체계 인덱스 추가

의미 체계 인덱스 추가하려는 각 열에 대해 다음 섹션에 설명된 옵션을 사용하여 ALTER FULLTEXT INDEX 문을 호출합니다. 이 문의 모든 옵션에 대한 자세한 내용은 ALTER FULLTEXT INDEX(Transact-SQL)를 참조하세요.

별도로 지정하지 않는 한 전체 텍스트 및 시맨틱 인덱스는 모두 ALTER를 호출한 후에 다시 채워집니다.

  • 열에만 전체 텍스트 인덱싱을 추가하려면 ADD 구문을 사용합니다.

  • 열에 전체 텍스트 및 의미 체계 인덱싱을 모두 추가하려면 ADD 구문과 함께 STATISTICAL_SEMANTICS 옵션을 사용합니다.

  • 전체 텍스트 인덱싱에 이미 사용하도록 설정된 열에 의미 체계 인덱싱을 추가하려면 이 ADD STATISTICAL_SEMANTICS 옵션을 사용합니다. 단일 ALTER 문에서는 하나의 열에만 의미 체계 인덱싱을 추가할 수 있습니다.

예제: 전체 텍스트 인덱싱이 이미 있는 열에 의미 체계 인덱싱 추가

다음 예제는 AdventureWorks2022 샘플 데이터베이스의 Production.Document 테이블에 있는 기존 전체 텍스트 인덱스를 변경하는 예제입니다. 이 예에서는 전체 텍스트 인덱스가 이미 있는 Production.Document 테이블의 Document 열에 의미 체계 인덱스를 추가합니다. 이 예제에서는 인덱스가 자동으로 다시 채워지지 않도록 지정합니다.

ALTER FULLTEXT INDEX ON Production.Document
    ALTER COLUMN Document
        ADD Statistical_Semantics
    WITH NO POPULATION
GO

SQL Server Management Studio를 사용하여 의미 체계 인덱스 추가

전체 텍스트 인덱스 속성 대화 상자의 전체 텍스트 인덱스 열 페이지에서 의미 체계 및 전체 텍스트 인덱싱에 사용할 수 있는 열을 변경할 수 있습니다. 자세한 내용은 전체 텍스트 인덱스 관리를 참조하세요.

의미 체계 인덱스 변경

기존 인덱스 변경을 위한 요구 사항 및 제한 사항

  • 인덱스 채우기가 진행 중인 동안에는 기존 인덱스를 변경할 수 없습니다. 인덱스 채우기의 진행률을 모니터링하는 방법에 대한 자세한 내용은 의미 체계 검색 관리 및 모니터링을 참조하세요.

  • ALTER FULLTEXT INDEX 문을 한 번 호출하는 것으로 열에 인덱싱을 추가하고 동일한 열의 인덱싱을 변경하거나 삭제할 수는 없습니다.

의미 체계 인덱스 삭제

ALTER FULLTEXT INDEX 문을 사용하여 기존 전체 텍스트 인덱스를 변경할 때 의미 체계 인덱싱을 삭제할 수 있습니다. SQL Server Management Studio의 다양한 대화 상자를 사용하여 의미 체계 인덱싱을 삭제할 수도 있습니다.

Transact-SQL을 사용하여 의미 체계 인덱스 삭제

열 또는 열에서만 의미 체계 인덱싱을 삭제하려면 ALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS 옵션을 사용하여 ALTER FULLTEXT INDEX문을 호출합니다. 단일 ALTER 문으로 여러 열의 인덱싱을 삭제할 수도 있습니다.

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP STATISTICAL_SEMANTICS;
GO

열에서 전체 텍스트 인덱스와 의미 체계 인덱싱을 모두 삭제하려면 ALTER COLUMN <column_name> DROP 옵션을 사용하여 ALTER FULLTEXT INDEX문을 호출합니다.

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP;
GO

SQL Server Management Studio를 사용하여 의미 체계 인덱스 삭제

전체 텍스트 인덱스 속성 대화 상자의 전체 텍스트 인덱스 열 페이지에서 의미 체계 및 전체 텍스트 인덱싱에 사용할 수 있는 열을 변경할 수 있습니다. 자세한 내용은 전체 텍스트 인덱스 관리를 참조하세요.

의미 체계 인덱스를 삭제하기 위한 요구 사항 및 제한 사항

  • 의미 체계 인덱싱을 유지하면서 열에서 전체 텍스트 인덱싱을 삭제할 수 없습니다. 의미 체계 인덱싱은 문서 유사성 결과에 대한 전체 텍스트 인덱싱에 따라 달라집니다.

  • 의미 체계 인덱싱이 활성화된 테이블의 마지막 열에서 의미 체계 인덱싱을 삭제하는 경우 NO POPULATION 옵션을 지정할 수 없습니다. 이전에 인덱싱된 결과를 제거하려면 채우기 주기가 필요합니다.

데이터베이스 개체에 의미 체계 검색이 사용하도록 설정되어 있는지 확인

데이터베이스에 대해 의미 체계 검색이 사용하도록 설정되어 있는지 확인

DATABASEPROPERTYEX(Transact-SQL) 메타데이터 함수의 IsFullTextEnabled 속성을 쿼리합니다.

반환값이 1이면 데이터베이스에 대해 전체 텍스트 검색 및 의미 체계 검색이 활성화되어 있음을 나타냅니다. 반환값이 0이면 활성화되지 않았음을 나타냅니다.

SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled');
GO

테이블에 의미 체계 검색이 활성화되어 있나요?

OBJECTPROPERTYEX(Transact-SQL) 메타데이터 함수의 TableFullTextSemanticExtraction 속성을 쿼리합니다.

반환 값이 1이면 테이블에 대해 의미 체계 검색이 사용하도록 설정되어 있음을 나타내고, 반환 값이 0이면 그렇지 않음을 나타냅니다.

SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO

열에 의미 체계 검색이 활성화되어 있나요?

특정 열에 대해 의미 체계 검색을 사용할 수 있는지 여부를 확인하려면 다음을 수행합니다.

  • COLUMNPROPERTY(Transact-SQL) 메타데이터 함수의 StatisticalSemantics 속성을 쿼리합니다.

    반환 값이 1이면 열에 대해 의미 체계 검색이 사용하도록 설정되어 있음을 나타내고, 반환 값이 0이면 그렇지 않음을 나타냅니다.

    SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics');
    GO
    
  • 전체 텍스트 인덱스 카탈로그 뷰 sys.fulltext_index_columns(Transact-SQL)를 쿼리합니다.

    statistical_semantics 열의 값이 1이면 전체 텍스트 인덱싱 외에도 지정된 열이 의미 체계 인덱싱에 사용하도록 설정되어 있음을 나타냅니다.

    SELECT * FROM sys.fulltext_index_columns
    WHERE object_id = OBJECT_ID('table_name');
    GO
    
  • Management Studio 의 개체 탐색기에서 열을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 열 속성 대화 상자의 일반 페이지에서 통계 의미 체계 속성의 값을 선택합니다.

    값이 True이면 전체 텍스트 인덱싱 외에도 지정된 열이 의미 체계 인덱싱에 사용하도록 설정되어 있음을 나타냅니다.

의미 체계 검색에 지원되는 언어 확인

전체 텍스트 인덱싱보다 의미 체계 인덱싱에 지원되는 언어 수가 적습니다. 따라서 전체 텍스트 검색을 위해 인덱싱할 수 있지만 의미 체계 검색을 위해서는 인덱싱할 수 없는 열이 있을 수 있습니다.

카탈로그 뷰 sys.fulltext_semantic_languages (Transact-SQL) 쿼리.

SELECT * FROM sys.fulltext_semantic_languages;
GO

의미 체계 인덱싱에 지원되는 언어는 다음과 같습니다. 이 목록은 LCID로 정렬된 카탈로그 뷰 sys.fulltext_semantic_languages(Transact-SQL)의 출력을 보여 줍니다.

언어 LCID
중국어 번체 1028
독일어 1031
영어(미국) 1033
프랑스어 1036
이탈리아어 1040
브라질어 1046
러시아어 1049
스웨덴어 1053
중국어(간체) 2052
영어(영국) 2057
포르투갈어 2070
중국어(홍콩 특별 행정구, 중국) 2070
스페인어 3082
중국어(싱가포르) 4100
중국어(마카오 특별 행정구) 5124

참고 항목

결과가 비어 있는 경우 의미 체계 언어 통계 데이터베이스를 다운로드하여 설치해야 합니다. 자세한 내용은 의미 체계 언어 통계 데이터베이스 설치, 첨부 및 등록하기를 참조하세요.

인덱싱할 수 있는 문서 유형 결정

카탈로그 뷰 sys.fulltext_document_types(Transact-SQL)를 쿼리합니다.

인덱싱할 문서 형식이 지원되는 형식 목록에 없는 경우 추가 필터를 찾은 다음 다운로드하여 설치해야 할 수 있습니다. 자세한 내용은 등록된 필터 및 단어 분리기 보기 또는 변경 내용을 참조하세요.

모범 사례: 전체 텍스트 및 의미 체계 인덱스에 대한 별도의 파일 그룹 만들기

디스크 공간 할당이 중요한 경우 전체 텍스트 및 의미 체계 인덱스에 대해 별도의 파일 그룹을 만드는 것이 좋습니다. 의미 체계 인덱스는 전체 텍스트 인덱스와 동일한 파일 그룹에 만들어집니다. 완전히 채워진 의미 체계 인덱스가 많은 양의 데이터를 포함할 수 있습니다.

문제: 특정 열에 대해 검색할 때 결과가 반환되지 않음

유니코드가 아닌 LCID가 유니코드 언어로 지정되었나요?

비유니코드 열에 대해 의미 체계 인덱싱을 사용하도록 설정할 때 러시아어의 LCID 1049와 같이 유니코드 단어만 있는 언어의 LCID를 사용할 수 있습니다. 이 경우 이 열의 의미 체계 인덱스에서 결과가 반환되지 않습니다.