Share via


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(4000)

전체 텍스트 인덱스 내에 저장되는 키워드의 16진수 표현입니다.

참고참고
OxFF는 파일 또는 데이터 집합의 끝을 나타내는 특수 문자입니다.

display_term

nvarchar(4000)

사람이 인식할 수 있는 키워드 형식입니다. 이 형식은 전체 텍스트 인덱스에 저장되는 내부 형식에서 파생됩니다.

참고참고
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. 문서 수준에서 전체 텍스트 인덱스 내용 표시

다음 예에서는 AdventureWorks2008R2 예제 데이터베이스의 HumanResources.JobCandidate 테이블에 문서 수준의 전체 텍스트 인덱스 내용을 표시합니다.

[!참고]

CREATE FULLTEXT INDEX(Transact-SQL)의 HumanResources.JobCandidate 테이블에 대해 제공된 예를 실행하여 이 인덱스를 만들 수 있습니다.

SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2008R2'), 
object_id('HumanResources.JobCandidate'));
GO