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