sys.dm_fts_index_keywords_by_document(Transact-SQL)

지정된 테이블에 연결된 전체 텍스트 인덱스의 문서 수준 내용에 대한 정보를 반환합니다.

sys.dm_fts_index_keywords_by_document는 동적 관리 함수입니다.

상위 수준의 전체 텍스트 인덱스 정보를 보려면

문서 속성과 관련된 속성 수준 내용에 대한 정보를 보려면

구문

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로 나타내는 문서 또는 행에서 현재 키워드가 나타나는 횟수입니다. 'search_property_name'이 지정되면 occurrence_count는 문서나 행 내에서 지정된 검색 속성에 있는 현재 단어의 발생 횟수만 표시합니다.

주의

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

사용 권한

전체 텍스트 인덱스가 적용되는 열에 대한 SELECT 권한 및 CREATE FULLTEXT CATALOG 권한이 필요합니다.

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

참고 항목

참조

전체 텍스트 검색 및 의미 체계 검색 동적 관리 뷰 및 함수(Transact-SQL)

sys.dm_fts_index_keywords(Transact-SQL)

sys.dm_fts_index_keywords_by_property(Transact-SQL)

sp_fulltext_keymappings(Transact-SQL)

개념

전체 텍스트 검색(SQL Server)

전체 텍스트 인덱스 성능 향상