sys.dm_fts_index_keywords_by_property (Transact-SQL)
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 qué propiedades registradas ha emitido IFilters en el momento de la indización, además del contenido exacto de cada una de las propiedades de cada documento indizado.
Para ver todo el contenido en el nivel de documento (incluido el contenido relacionado con las propiedades)
Para ver información de nivel superior sobre un índice de texto completo
[!NOTA]
Para obtener más información acerca de 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')
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 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.
|
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.
|
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 del índice de texto completo de la tabla especificada 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.
Para ver la asociación entre el identificador property_id y el nombre de propiedad |
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 de la tabla base. En este caso, para identificar la fila de la tabla base devuelta por dm_fts_index_keywords_by_property, 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_property 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_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 utiliza el alias KWBPOP para 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 AdventureWorks;
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
Vea también
Referencia
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)
Conceptos
Búsqueda de texto completo (SQL Server)
Mejorar el rendimiento de los índices de texto completo
Buscar propiedades de documento con listas de propiedades de búsqueda