다음을 통해 공유


테이블 및 열에서 의미 검색 활성화

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

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

의미 체계 인덱스 만들기

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

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

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

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

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

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

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

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

  • 전체 텍스트 인덱싱을 지원하는 문서 형식을 varbinary(max) 열에 지정할 수 있습니다. 자세한 내용은 방법: 이 항목에서 인덱싱할 수 있는 문서 형식 결정 방법을 참조하세요.

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

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

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

방법: Full-Text 인덱스가 없는 경우 의미 체계 인덱스 만들기

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

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

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

다음 예제에서는 기본 전체 텍스트 카탈로그 ft를 만듭니다. 그런 다음 AdventureWorks2012 샘플 데이터베이스의 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: 인덱스 채우기가 지연된 여러 열에 전체 텍스트 및 의미 체계 인덱스 만들기

다음 예제에서는 AdventureWorks2012 샘플 데이터베이스에 documents_catalog 전체 텍스트 카탈로그를 만듭니다. 그런 다음 이 새 카탈로그를 사용하는 전체 텍스트 인덱스를 만듭니다. 전체 텍스트 인덱스는 Production.Document 테이블의 Title, DocumentSummaryDocument 열에 만들어지지만 의미 체계 인덱스는 문서 열에만 만들어집니다. 이 전체 텍스트 인덱스에서는 새로 만든 전체 텍스트 카탈로그와 기존 고유 키 인덱스( 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를 사용하여 새 의미 체계 인덱스 만들기
전체 텍스트 인덱싱 마법사를 실행하고 테이블 열 선택 페이지에서 의미 체계 인덱스를 만들 각 열에 대해 통계 의미 체계 를 사용하도록 설정합니다. 전체 텍스트 인덱싱 마법사를 시작하는 방법에 대한 정보를 비롯한 자세한 내용은 전체 텍스트 인덱싱 마법사 사용을 참조 하세요.

방법: 기존 Full-Text 인덱스가 있는 경우 의미 체계 인덱스 만들기

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 문에서 하나의 열에만 의미 체계 인덱싱을 추가할 수 있습니다.

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

다음 예제에서는 AdventureWorks2012 샘플 데이터베이스의 Production.Document 테이블에서 기존 전체 텍스트 인덱스를 변경합니다. 이 예제에서는 이미 전체 텍스트 인덱스가 있는 Production.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 COLUMNcolumn_nameDROP STATISTICAL_SEMANTICS 옵션을 사용하여 ALTER FULLTEXT INDEX 문을 호출합니다. 단일 ALTER 문의 여러 열에서 인덱싱을 삭제할 수 있습니다.
```sql  
USE database_name  
GO  

ALTER FULLTEXT INDEX  
    ALTER COLUMN column_name  
    DROP STATISTICAL_SEMANTICS  
GO  
```  
  • 열에서 전체 텍스트 및 의미 체계 인덱싱을 모두 삭제하려면 ALTER COLUMNcolumn_nameDROP 옵션을 사용하여 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
독일어 1031
영어(미국) 1033
프랑스어 1036
이탈리아어 1040
포르투갈어 (브라질) 1046
러시아어 1049
스웨덴어 1053
영어(영국) 2057
포르투갈어(포르투갈) 2070
스페인어 3082

방법: 인덱싱할 수 있는 문서 형식 확인

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

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

모범 사례: Full-Text 및 의미 체계 인덱스에 대해 별도의 파일 그룹을 만드는 것이 좋습니다.

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

문제: 특정 열을 검색하면 결과가 반환되지 않음

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