테이블 및 열에 대한 의미 체계 검색 사용
적용 대상: 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
, DocumentSummary
및Document
열에 만들어지지만 의미 체계 인덱스는 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를 사용할 수 있습니다. 이 경우 이 열의 의미 체계 인덱스에서 결과가 반환되지 않습니다.