Compartir a través de


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 asociado a la tabla especificada.

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

Para ver información de nivel superior sobre un índice de texto completo

Para ver información sobre el contenido de nivel de propiedad relacionado con una propiedad de documento

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 la 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(4000)

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

[!NOTA]

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

display_term

nvarchar(4000)

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

[!NOTA]

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. Cuando se especifica 'search_property_name', occurrence_count solo muestra el número de apariciones de la palabra clave actual en la propiedad de búsqueda especificada dentro del documento o la fila.

Comentarios

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 usar 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 dados.

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 de la tabla base. En este caso, para identificar la fila de la tabla base devuelta por dm_fts_index_keywords_by_document, tiene que combinar esta vista con los resultados devueltos por sp_fulltext_keymappings. Para poder combinarlos, debe almacenar la salida del procedimiento almacenado en una tabla temporal. Después, puede combinar la columna document_id de dm_fts_index_keywords_by_document con la columna DocId devuelta por este procedimiento almacenado. 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

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

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

Vea también

Referencia

Funciones y vistas de administración dinámica relacionadas con la búsqueda de texto completo y la búsqueda semántica (Transact-SQL)

sys.dm_fts_index_keywords (Transact-SQL)

sys.dm_fts_index_keywords_by_property (Transact-SQL)

sp_fulltext_keymappings (Transact-SQL)

Conceptos

Búsqueda de texto completo (SQL Server)

Mejorar el rendimiento de los índices de texto completo