Compartir vía


sys.dm_fts_index_keywords_by_property (Transact-SQL)

Se aplica a: SQL Server

Devuelve todo el contenido relacionado con propiedades en el índice de texto completo de una tabla determinada. Esto incluye todos los datos que pertenecen a cualquier propiedad registrados por la lista de propiedades de búsqueda asociada a ese índice de texto completo.

sys.dm_fts_index_keywords_by_property es una función de administración dinámica que permite ver las propiedades registradas emitidas por IFilters en el momento del índice, así como el contenido exacto de cada propiedad de cada documento indexado.

Para ver todo el contenido de nivel de documento (incluido el contenido relacionado con propiedades)

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

Nota:

Para obtener información sobre las listas de propiedades de búsqueda, vea Buscar propiedades de documento con listas de propiedades de búsqueda.

Sintaxis

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

Argumentos

db_id('database_name')
Una 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_property usa para buscar la base de datos especificada. Si el parámetro database_name se omite, se devuelve el identificador de base de datos actual.

object_id('table_name')
Una 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 un 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 un 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.
property_id int Identificador de propiedad interno de la propiedad de búsqueda dentro del índice de texto completo de la tabla que especificó en el parámetro OBJECT_ID('table_name').

Cuando una propiedad determinada se agrega a una lista de propiedades de búsqueda, el servicio Motor de búsqueda de texto completo registra la propiedad y le asigna un identificador de propiedad interno que es específico de esa lista de propiedades. El identificador de propiedad interno, que es un entero, es único para una lista de propiedades de búsqueda determinada. Si una propiedad determinada se registra para varias listas de propiedades de búsqueda, se puede asignar un identificador de propiedad interno diferente para cada lista de propiedades de búsqueda.

Nota: El identificador de propiedad interno es distinto del identificador entero de propiedad que se especifica al agregar la propiedad a la lista de propiedades de búsqueda. Para obtener más información, vea Buscar propiedades de documento con listas de propiedades de búsqueda.

Para ver la asociación entre property_id y el nombre de propiedad:
sys.registered_search_properties (Transact-SQL)

Comentarios

Esta vista de administración dinámica puede responder preguntas como las siguientes:

  • ¿Qué contenido se almacena en una determinada propiedad de un DocID específico?

  • ¿Qué frecuencia tiene una determinada propiedad entre los documentos indizados?

  • ¿Qué documentos contienen realmente una propiedad determinada? Todo esto resulta útil si al consultar una determinada propiedad de búsqueda, no se devuelve ninguno de los documentos que esperaba localizar.

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 de la tabla base devuelta por dm_fts_index_keywords_by_property, debe 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. A continuación, puede combinar la columna document_id de dm_fts_index_keywords_by_property con la columna DocId que devuelve este procedimiento almacenado. Tenga en cuenta que una columna de marca de tiempo no puede recibir valores en tiempo de inserción, ya que SQL Server los genera automáticamente. Por lo tanto, la columna timestamp debe convertirse 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_property   
   ( @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

En el siguiente ejemplo se devuelven las palabras clave de la propiedad Author en el índice de texto completo de la tabla Production.Document de la base de datos de ejemplo AdventureWorks. En el ejemplo se usa el alias KWBPOP de la tabla devuelta por sys.dm_fts_index_keywords_by_property. En el ejemplo se usan combinaciones internas para combinar columnas de sys.registered_search_properties y sys.fulltext_indexes.

-- Once the full-text index is configured to support property searching  
-- on the Author property, return any keywords indexed for this property.  
USE AdventureWorks2022;  
GO   
SELECT KWBPOP.* FROM   
   sys.dm_fts_index_keywords_by_property( DB_ID(),   
   object_id('Production.Document') ) AS KWBPOP  
   INNER JOIN  
      sys.registered_search_properties AS RSP ON(   
         (KWBPOP.property_id = RSP.property_id)   
         AND (RSP.property_name = 'Author') )  
   INNER JOIN  
      sys.fulltext_indexes AS FTI ON(   
         (FTI.[object_id] = object_id('Production.Document'))   
         AND (RSP.property_list_id = FTI.property_list_id) );  
GO  

Consulte también

Búsqueda de texto completo
Mejorar el rendimiento de los índices de texto completo
sp_fulltext_keymappings (Transact-SQL)
sys.dm_fts_index_keywords_by_document (Transact-SQL)
sys.dm_fts_index_keywords (Transact-SQL)
sys.registered_search_properties (Transact-SQL)
sys.registered_search_property_lists (Transact-SQL)
Buscar propiedades de documento con listas de propiedades de búsqueda