sys.dm_fts_index_keywords_by_document (Transact-SQL)

Devuelve información sobre el contenido de nivel de documento de un índice de texto completo para la tabla especificada. Una palabra clave determinada puede aparecer en varios documentos.

sys.dm_fts_index_keywords_by_document es una función de administración dinámica.

[!NOTA]

Para ver la información de índice de texto completo de nivel superior, en el nivel de palabra clave, use la función de administración dinámica sys.dm_fts_index_keywords (Transact-SQL).

Sintaxis

sys.dm_fts_index_keywords_by_document( DB_ID('database_name'), OBJECT_ID('table_name') )

Argumentos

  • db_id('database_name')
    Llamada a la función DB_ID(). Esta función acepta un nombre de base de datos y devuelve el identificador de base de datos, que sys.dm_fts_index_keywords_by_document utiliza para buscar la base de datos especificada. Si se omite el parámetro database_name, se devuelve el identificador de base de datos actual.

  • object_id('table_name')
    Llamada a la función OBJECT_ID(). Esta función acepta un nombre de tabla y devuelve el identificador de la tabla que contiene el índice de texto completo que se va a inspeccionar.

Tabla devuelta

Columna

Tipo de datos

Descripción

keyword

nvarchar(8000)

Representación hexadecimal de la palabra clave que se almacena dentro del índice de texto completo.

NotaNota
OxFF representa el carácter especial que indica el final de un archivo o conjunto de datos.

display_term

nvarchar(8000)

Formato legible de la palabra clave. Este formato se deriva del formato interno que se almacena en el índice de texto completo.

NotaNota
OxFF representa el carácter especial que indica el final de un archivo o conjunto de datos.

column_id

int

Identificador de la columna en que la palabra clave actual forma parte del índice de texto completo.

document_id

int

Identificador del documento o fila en que el término actual se indizó con texto completo. Este identificador corresponde al valor de clave de texto completo de ese documento o fila.

occurrence_count

int

Número de apariciones de la palabra clave actual en el documento o fila que se indica mediante document_id.

Notas

La información devuelta por sys.dm_fts_index_keywords_by_document es útil para averiguar lo siguiente, entre otras cosas:

  • El número total de palabras clave que contiene un índice de texto completo.

  • Si una palabra clave forma parte de un documento o fila determinados.

  • Cuántas veces aparece una palabra clave en el índice de texto completo; es decir:

    (SUM(occurrence_count) WHERE keyword=keyword_value )

  • Número de veces que una palabra clave aparece en un documento o fila determinados.

  • Número de palabras clave contenidas en un documento o fila determinados.

Además, también puede utilizar la información proporcionada por sys.dm_fts_index_keywords_by_document para recuperar todas las palabras clave que pertenecen a un documento o fila determinados.

Cuando la columna de clave de texto completo es un tipo de datos entero, como se recomienda, document_id se asigna directamente al valor de clave de texto completo de la tabla base.

Por el contrario, cuando la columna de clave de texto completo utiliza un tipo de datos que no es entero, document_id no representa la clave de texto completo en la tabla base. En este caso, para identificar la fila en la tabla base que devuelve dm_fts_index_keywords_by_document, tiene que combinar esta vista con los resultados que devuelve sp_fulltext_keymappings. Para poder combinarlos, debe almacenar la salida del procedimiento almacenado en una tabla temporal. A continuación, puede combinar la columna document_id de dm_fts_index_keywords_by_document con la columna DocId que este procedimiento almacenado devuelve. Observe que una columna timestamp no puede recibir valores en el momento de la inserción, porque SQL Server los genera automáticamente. Por consiguiente, la columna timestamp se debe convertir en columnas varbinary(8). En el ejemplo siguiente se muestran estos pasos. En este ejemplo, table_id es el identificador de la tabla, database_name es el nombre de la base de datos y table_name es el nombre de la tabla.

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

Permisos

Requiere los permisos CREATE FULLTEXT CATALOG y el permiso SELECT en las columnas cubiertas por el índice de texto completo.

Ejemplos

A. Mostrar el contenido del índice de texto completo en el nivel de documento

En el ejemplo siguiente se muestra el contenido del índice de texto completo en el nivel de documento en la tabla HumanResources.JobCandidate de la base de datos de ejemplo AdventureWorks.

[!NOTA]

Puede crear este índice ejecutando el ejemplo proporcionado por la tabla HumanResources.JobCandidate en CREATE FULLTEXT INDEX (Transact-SQL).

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