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

적용 대상: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를 만듭니다. 그런 다음 샘플 데이터베이스 테이블의 HumanResources.JobCandidate 열에 JobCandidateID 고유한 인덱스가 AdventureWorks2022 만들어집니다. 이 고유 인덱스는 전체 텍스트 인덱스 키 열로 필요합니다. 그런 다음 열에 전체 텍스트 인덱스와 의미 체계 인덱스가 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를 만듭니다. 그런 다음 이 새 카탈로그를 사용하는 전체 텍스트 인덱스를 만듭니다. 전체 텍스트 인덱스는 테이블의 TitleProduction.DocumentDocumentSummaryDocument 열에 만들어지지만 의미 체계 인덱스는 열에 Document 만 만들어집니다. 이 전체 텍스트 인덱스에서는 새로 만든 전체 텍스트 카탈로그와 기존 고유 키 인덱 PK_Document_DocumentID스가 사용됩니다. 권장되는 대로 이 인덱스 키는 정수 열 DocumentID에 만들어집니다. 이 예제에서는 열에 있는 데이터의 언어인 영어 1033의 LCID를 지정합니다.

또한 이 예제에서는 채우기 없이 변경 내용 추적이 해제되도록 지정합니다. 나중에 사용량이 많은 시간 동안 이 예제에서는 문을 사용하여 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 .

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

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

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

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

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 FULLTEXT INDEXALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS 문을 호출합니다. 단일 ALTER 문의 여러 열에서 인덱싱을 삭제할 수 있습니다.

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP STATISTICAL_SEMANTICS;
GO

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

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP;
GO

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

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

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

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

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

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

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

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

반환 값은 1 데이터베이스에 대해 전체 텍스트 검색 및 의미 체계 검색을 사용하도록 설정되었음을 나타냅니다. 반환 값은 0 사용하도록 설정되지 않음을 나타냅니다.

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

테이블에 대해 의미 체계 검색을 사용할 수 있나요?

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

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

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

열에 대해 의미 체계 검색을 사용할 수 있나요?

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

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

    반환 값이 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)의 출력을 나타냅니다.

Language 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를 사용할 수 있습니다. 이 경우 이 열의 의미 체계 인덱스에서 결과가 반환되지 않습니다.