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진수 표현입니다.
|
display_term |
nvarchar(4000) |
사람이 인식할 수 있는 키워드 형식입니다. 이 형식은 전체 텍스트 인덱스에 저장되는 내부 형식에서 파생됩니다.
|
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)