sys.dm_fts_index_keywords_by_document(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed InstanceAnalytics Platform System(PDW)

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

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() 함수에 대한 호출입니다. 이 함수는 데이터베이스 이름을 받아서 데이터베이스 ID를 반환합니다. 이 ID는 지정된 데이터베이스를 찾기 위해 sys.dm_fts_index_keywords_by_document에 사용됩니다. 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_value )

  • 지정된 문서 또는 행에 키워드가 표시되는 횟수입니다.

  • 지정된 문서 또는 행에 포함된 키워드 수입니다.

또한 sys.dm_fts_index_keywords_by_document 제공된 정보를 사용하여 지정된 문서 또는 행에 속하는 모든 키워드를 검색할 수도 있습니다.

전체 텍스트 키 열이 정수 데이터 형식인 경우 권장되는 대로 document_id 기본 테이블의 전체 텍스트 키 값에 직접 매핑됩니다.

반면 전체 텍스트 키 열에서 정수가 아닌 데이터 형식을 사용하는 경우 document_id 기본 테이블의 전체 텍스트 키를 나타내지 않습니다. 이 경우 dm_fts_index_keywords_by_document 반환된 기본 테이블의 행을 식별하려면 이 뷰를 sp_fulltext_keymappings 반환된 결과와 조인해야 합니다. 조인하려면 먼저 저장 프로시저의 출력을 임시 테이블에 저장해야 합니다. 그런 다음 이 저장 프로시저에서 반환되는 DocId 열과 dm_fts_index_keywords_by_document document_id 열을 조인할 수 있습니다. 타임스탬프 열은 SQL Server에서 자동으로 생성되므로 삽입 시 값을 받을 수 없습니다. 따라서 타임스탬프 열은 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 권한이 필요합니다.

A. 문서 수준에서 전체 텍스트 인덱스 콘텐츠 표시

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

참고 항목

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

SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2022'),   
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)
전체 텍스트 인덱스 성능 향상