sys.dm_fts_index_keywords_by_document(Transact-SQL)
지정된 테이블에 대한 전체 텍스트 인덱스의 문서 수준 내용에 관한 정보를 반환합니다. 지정된 키워드는 여러 문서에 나타날 수 있습니다.
sys.dm_fts_index_keywords_by_document는 동적 관리 함수입니다.
[!참고]
더 높은 수준의 전체 텍스트 인덱스 정보를 보려면 키워드 수준에서 sys.dm_fts_index_keywords(Transact-SQL) 동적 관리 함수를 사용하십시오.
구문
sys.dm_fts_index_keywords_by_document( DB_ID('database_name'), OBJECT_ID('table_name') )
인수
db_id('database_name')
DB_ID() 함수에 대한 호출입니다. 이 함수는 데이터베이스 이름을 받아서 sys.dm_fts_index_keywords_by_document가 지정된 데이터베이스를 찾기 위해 사용하는 데이터베이스 ID를 반환합니다. database_name을 생략하면 현재 데이터베이스 ID가 반환됩니다.object_id('table_name')
OBJECT_ID() 함수에 대한 호출입니다. 이 함수는 테이블 이름을 받아서 검사할 전체 텍스트 인덱스가 들어 있는 테이블의 테이블 ID를 반환합니다.
반환된 테이블
열 |
데이터 형식 |
설명 |
---|---|---|
keyword |
nvarchar(8000) |
전체 텍스트 인덱스에 저장되는 키워드의 16진수 표현입니다.
참고
OxFF는 파일 또는 데이터 집합의 끝을 나타내는 특수 문자입니다.
|
display_term |
nvarchar(8000) |
사람이 인식할 수 있는 키워드 형식입니다. 이 형식은 전체 텍스트 인덱스에 저장되는 내부 형식에서 파생됩니다.
참고
OxFF는 파일 또는 데이터 집합의 끝을 나타내는 특수 문자입니다.
|
column_id |
int |
현재 키워드가 전체 텍스트 인덱싱된 열의 ID입니다. |
document_id |
int |
현재 용어가 전체 텍스트 인덱싱된 문서 또는 행의 ID입니다. 이 ID는 해당 문서 또는 행의 전체 텍스트 키 값과 같습니다. |
occurrence_count |
int |
document_id로 표시되는 문서 또는 행에서 현재 키워드가 나타나는 횟수입니다. |
주의
sys.dm_fts_index_keywords_by_document가 반환하는 정보는 특히 다음을 확인하는 데 유용합니다.
전체 텍스트 인덱스에 포함된 총 키워드 수
키워드가 지정된 문서 또는 행에 포함되어 있는지 여부
모든 전체 텍스트 인덱스에서 키워드가 나타나는 횟수
(SUM(occurrence_count) WHERE keyword=keyword_value )
지정된 문서 또는 행에서 키워드가 나타나는 횟수
지정된 문서 또는 행에 포함된 키워드 수
또한 sys.dm_fts_index_keywords_by_document가 제공하는 정보를 사용하여 지정된 문서 또는 행에 속한 모든 키워드를 검색할 수도 있습니다.
권장한 대로 전체 텍스트 키 열이 integer 데이터 형식이면 document_id가 기본 테이블의 전체 텍스트 키 값에 직접 매핑됩니다.
반대로 전체 텍스트 키 열이 integer가 아닌 데이터 형식이면 document_id가 기본 테이블의 전체 텍스트 키를 나타내지 않습니다. 이 경우 dm_fts_index_keywords_by_document에서 반환된 기본 테이블의 행을 식별하려면 이 뷰를 sp_fulltext_keymappings에서 반환된 결과와 조인해야 합니다. 이 뷰를 조인하려면 저장 프로시저의 출력을 임시 테이블에 저장해야 합니다. 그리고 나서 dm_fts_index_keywords_by_document의 document_id 열을 이 저장 프로시저에서 반환된 DocId 열과 조인할 수 있습니다. 삽입 시 timestamp 열에서 값을 받을 수 없습니다. 이 값은 SQL Server에 의해 자동으로 생성됩니다. 따라서 timestamp 열을 varbinary(8) 열로 변환해야 합니다. 다음 예에서는 이 단계를 보여 줍니다. 이 예에서 table_id는 테이블 ID이고, database_name은 데이터베이스 이름이고, table_name은 테이블 이름입니다.
USE database_name;
GO
CREATE TABLE #MyTempTable
(
docid INT PRIMARY KEY ,
[key] INT NOT NULL
);
DECLARE @db_id int = db_id(N'database_name');
DECLARE @table_id int = OBJECT_ID(N'table_name');
INSERT INTO #MyTempTable EXEC sp_fulltext_keymappings @table_id;
SELECT * FROM sys.dm_fts_index_keywords_by_document
( @db_id, @table_id ) kbd
INNER JOIN #MyTempTable tt ON tt.[docid]=kbd.document_id;
GO
사용 권한
전체 텍스트 인덱스를 포함하는 열에 대한 CREATE FULLTEXT CATALOG 권한과 SELECT 권한이 필요합니다.
예
1. 문서 수준의 전체 텍스트 인덱스 내용 표시
다음 예에서는 AdventureWorks 예제 데이터베이스의 HumanResources.JobCandidate 테이블에 문서 수준의 전체 텍스트 인덱스 내용을 표시합니다.
[!참고]
CREATE FULLTEXT INDEX(Transact-SQL)의 HumanResources.JobCandidate 테이블에 대해 제공된 예를 실행하여 이 인덱스를 만들 수 있습니다.
SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks'),
object_id('HumanResources.JobCandidate'));
GO