Buscar propiedades de documentos con listas de propiedades de búsqueda

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Puedes configurar un índice de texto completo para admitir búsquedas restringidas a propiedades específicas, como Autor y Título, para tipos de documento compatibles en una columna de datos binarios varbinary(max) (incluido FILESTREAM) o image. Sin esta configuración, las consultas de texto completo realizan búsquedas genéricas en todo el documento, sin distinguir el contenido de propiedad del contenido del cuerpo. Esta forma de búsqueda con alcance de propiedad se conoce como búsqueda de propiedades.

El filtro asociado (IFilter) determina si la búsqueda de propiedades es posible en un tipo de documento específico. En algunos tipos de documento, el IFilter asociado extrae algunas o todas las propiedades definidas para ese tipo de documento, así como el contenido del cuerpo del documento. Puede configurar un índice de texto completo para que admita la búsqueda de propiedades solo en aquellas propiedades extraídas por un IFilter durante la indización de texto completo. Entre los IFilters que extraen varias propiedades de documentos están los IFilters para tipos de documentos de Microsoft Office (como .docx, .xlsx, y .pptx). Por otro lado, el IFilter XML no emite propiedades.

Cómo funciona la búsqueda de texto completo con las propiedades de búsqueda

Full-Text Search permite la búsqueda de propiedades asignando un ID interno de propiedad a cada propiedad registrada y almacenando esos IDs en el índice de texto completo.

Identificadores internos de propiedad

El Motor de búsqueda de texto completo asigna a cada propiedad registrada un identificador de propiedad interno, que identifica de manera inequívoca la propiedad en esa lista de búsqueda determinada y que es específico de esa lista de propiedades de búsqueda. Por consiguiente, si una propiedad se agrega a varias listas de propiedades de búsqueda, es probable que su identificador de propiedad interno difiera entre las diferentes listas.

Cuando una propiedad se registra en una lista de búsqueda, el Motor de búsqueda de texto completo asigna arbitrariamente a la propiedad un identificador de propiedad interno . El identificador de propiedad interno es un entero que identifica de manera inequívoca la propiedad de esa lista de propiedades de búsqueda.

En la ilustración siguiente se muestra una vista lógica de una lista de propiedades de búsqueda en la que se especifican dos propiedades, Title y Keywords. El nombre de la lista de propiedades para Keywords es Tags. Estas propiedades pertenecen al mismo conjunto de propiedades, cuyo GUID es f29f85e0-4ff9-1068-ab91-08002b27b3d9. Los identificadores enteros de propiedades son 2 para Title y 5 para Tags (Keywords). El Motor de búsqueda de texto completo asigna arbitrariamente cada propiedad a un identificador de propiedad interno que es único para la lista de propiedades de búsqueda. El identificador de propiedad interno de la propiedad Title es 1, mientras que el identificador de propiedad interno de la propiedad Tags es 2.

Captura de pantalla de la asignación de la lista de propiedades de búsqueda a la tabla interna.

Es probable que el ID interno de la propiedad sea diferente del identificador numérico entero de la propiedad. 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. Por ejemplo, el identificador de propiedad interno podría ser 4 en una lista de propiedades de búsqueda, 1 en otra, 3 en otra, etc. Por el contrario, el identificador entero de propiedad es intrínseco a la propiedad y será siempre el mismo dondequiera que se use la propiedad.

Índice de propiedades registradas

Una vez que el índice de texto completo se asocia con una lista de propiedades de búsqueda, el índice debe volver a llenarse para incluir los términos de búsqueda específicos de la propiedad. Durante la indización de texto completo, el contenido de todas las propiedades se almacena en el índice de texto completo junto con otro contenido. Sin embargo, al indizar un término de búsqueda encontrado en una propiedad registrada, el indizador de texto completo almacena también junto con el término el identificador de propiedad interno correspondiente. En cambio, si una propiedad no está registrada, se almacena en el índice de texto completo como si fuera parte del cuerpo del documento, y tiene un valor cero para el ID interno de la propiedad.

En la ilustración siguiente se muestra una vista lógica de cómo aparecen los términos de búsqueda en un índice de texto completo que está asociado con la lista de propiedades de búsqueda mostrada en la ilustración anterior. Un documento de ejemplo, Documento 1, contiene tres propiedades (Título, Autor y Palabras clave), así como el cuerpo del documento. En el caso de las propiedades Title y Keywords, que se han especificado en la lista de propiedades de búsqueda, los términos de búsqueda se asocian con sus identificadores de propiedad internos correspondientes en el índice de texto completo. Por el contrario, el contenido de la propiedad Autor se indexa como si formara parte del cuerpo del documento. Esto significa que al registrar una propiedad, se incrementa en cierta medida el tamaño del índice de texto completo en función del volumen de contenido almacenado en la propiedad.

Captura de pantalla del índice de texto completo que utiliza una lista de propiedades de búsqueda.

Los términos de búsqueda en la propiedad de Título (Favorite, Biking, y Trails) están asociados con el ID interno de propiedad asignado a Título para este índice, 1. Los términos de búsqueda en la propiedad Palabras Clave (biking y mountain) están asociados con el ID interno de propiedad asignado a las Etiquetas para este índice, 2. Para términos de búsqueda en la propiedad Autor (Jane y Doe) y términos de búsqueda en el cuerpo del documento, el ID interno de propiedad es 0. El término biking aparece en la propiedad Título, en la propiedad de Palabras Clave (Etiquetas) y en el cuerpo del documento. Una búsqueda del valor biking en la propiedad Título o en la propiedad Palabras clave (Etiquetas) devolvería este documento en los resultados. Una consulta genérica en texto completo para biking también devolvería este documento, como si el índice no estuviera configurado para la búsqueda de propiedades. Una búsqueda de la propiedad biking en la propiedad Autor no devolvería este documento.

Las consultas de texto completo referentes a propiedades usan los identificadores de propiedad internos registrados en la lista actual de propiedades de búsqueda del índice de texto completo.

Impacto de habilitar la búsqueda de propiedades

Al configurar un índice de texto completo para que admita la búsqueda de una o varias propiedades, se incrementa en cierta medida el tamaño del índice en función del número de propiedades que se especifiquen en la lista de propiedades de búsqueda y del contenido de cada propiedad.

Al probar los corpuses típicos de documentos de Microsoft Word, Excel y PowerPoint, se configuró un índice de texto completo para indexar propiedades típicas de búsqueda. La indexación de estas propiedades aumentó el tamaño del índice de texto completo aproximadamente en un 5 por ciento. Este aumento aproximado de tamaño probablemente sea típico de la mayoría de los corpus documentales. Sin embargo, en última instancia, el aumento de tamaño depende de la cantidad de datos de propiedades en un corpus de documentos dado en relación con la cantidad total de datos.

Para habilitar la búsqueda de propiedades, crea una lista de propiedades de búsqueda, añade una o más propiedades a la lista y luego asocia la lista con un índice de texto completo.

Crear una lista de propiedades de búsqueda

Crea una lista de propiedades de búsqueda usando Transact-SQL o SQL Server Management Studio.

Crea una lista de propiedades de búsqueda en Transact-SQL

Usa la CREATE SEARCH PROPERTY LIST declaración y pon al menos un nombre para la lista.

Crea una lista de propiedades de búsqueda en SQL Server Management Studio

  1. En el Explorador de objetos, expanda el servidor.

  2. Expanda Bases de datosy, a continuación, expanda la base de datos en la que desea crear la lista de propiedades de búsqueda.

  3. Expanda Almacenamientoy haga clic con el botón derecho en Listas de propiedades de búsqueda.

  4. Seleccione Nueva lista de propiedades de búsqueda.

  5. Especifique el nombre de la lista de propiedades.

  6. Opcionalmente, especifique a otra persona como propietario de la lista de propiedades.

  7. Seleccione una de las siguientes opciones:

    • Crear una lista de propiedades de búsqueda vacía

    • Crear a partir de una lista de propiedades de búsqueda existente

    Para obtener más información, consulte CREATE SEARCH PROPERTY LIST.

  8. Seleccione Aceptar.

Añadir propiedades a una lista de propiedades de búsqueda

La búsqueda de propiedades necesita la creación de una lista de propiedades de búsqueda y la especificación de una o varias propiedades cuya búsqueda desea poder realizar. Cuando agrega una propiedad a una lista de propiedades de búsqueda, la propiedad se registra en esa lista concreta. Para agregar una propiedad a una lista de propiedades de búsqueda, necesitará los valores siguientes:

  • GUID del conjunto de propiedades

    Cada propiedad de búsqueda pertenece a un único conjunto de propiedades que contiene un grupo de propiedades relacionadas. Cada conjunto de propiedades se identifica mediante un identificador único global (GUID).

  • Identificador entero de propiedad

    Cada propiedad de búsqueda posee un identificador que es único dentro del conjunto de propiedades. Para una propiedad determinada, el identificador puede ser un entero o una cadena, aunque la búsqueda de texto completo solamente admite identificadores de enteros.

  • Nombre de propiedad

    Este es el nombre que los usuarios especificarán en las consultas de texto completo para buscar en la propiedad. El nombre de una propiedad puede contener espacios internos. La longitud máxima es de 256 caracteres.

    El nombre de la propiedad puede ser cualquiera de los siguientes:

    • El nombre canónico de Windows de la propiedad, como System.Author o System.Contact.HomeAddress.

    • Un nombre fácil de usar y de recordar para los usuarios. Algunas propiedades están asociadas a un nombre conocido y fácil de usar, como "Autor" o "Dirección particular", pero puede especificar el nombre que resulte más apropiado para sus usuarios.

    Nota:

    La combinación que conforman el GUID del conjunto de propiedades y el identificador de propiedad debe ser única en una lista de propiedades de búsqueda determinada. Esto significa que no puedes añadir la misma propiedad más de una vez con nombres o descripciones diferentes.

  • Descripción de la propiedad (opcional)

    Al agregar una propiedad de búsqueda a una lista de propiedades de búsqueda, puede proporcionar una descripción opcional. Por ejemplo, podrías querer proporcionar información sobre una propiedad que no sea evidente en su nombre, o podrías querer describir el conjunto de propiedades de la propiedad.

Obtener valores para una lista de propiedades de búsqueda

Consulte Buscar GUID de conjuntos de propiedades e ID enteros de propiedades para las propiedades de búsqueda.

Añadir una propiedad a una lista de búsqueda de propiedades en Transact-SQL

Utiliza la instrucción ALTER SEARCH PROPERTY LIST con los valores que obtuviste mediante uno de los métodos descritos en el artículo, Buscar GUID de conjuntos de propiedades e identificadores enteros de propiedades para las propiedades de búsqueda.

En el ejemplo siguiente se muestra el uso de estos valores cuando se agrega una propiedad a una lista de propiedades de búsqueda:

ALTER SEARCH PROPERTY LIST DocumentTablePropertyList
ADD 'Title' WITH (
    PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9',
    PROPERTY_INT_ID = 2,
    PROPERTY_DESCRIPTION = 'System.Title - Title of the item.'
);

Añadir una propiedad a una lista de propiedades de búsqueda en SQL Server Management Studio

Use el cuadro de diálogo Propiedades de lista de propiedades de búsqueda para agregar y quitar propiedades de búsqueda. Puede encontrar Listas de propiedades de búsqueda en el Explorador de objetos, en el nodo Almacenamiento de la base de datos asociada.

Asocia una lista de propiedades de búsqueda con un índice de texto completo

Para que un índice de texto completo sea compatible con la búsqueda de las propiedades registradas en una lista de propiedades de búsqueda, debe asociar la lista de propiedades de búsqueda con el índice y volver a llenar dicho índice. Al llenar de nuevo el índice de texto completo, se crean entradas de índice específicas de la propiedad para los términos de búsqueda de cada una de las propiedades registradas.

Mientras el índice de texto completo siga asociado a esta lista de propiedades de búsqueda, una consulta de texto completo puede usar la opción PROPERTY del predicado CONTAINS para buscar propiedades registradas en esta lista de propiedades de búsqueda.

Si cambia la lista de propiedades de búsqueda asociada al índice de texto completo, se debe volver a generar el índice para que este tenga un estado coherente. El índice se trunca inmediatamente y está vacío hasta que se ejecuta el rellenado completo. Para más información sobre cuándo cambiar la lista de propiedades de búsqueda provoca la reconstrucción del índice, véase "Observaciones", en ALTER FULLTEXT INDEX.

Asocia una lista de propiedades de búsqueda con un índice de texto completo en Transact-SQL

Utilice la instrucción ALTER FULLTEXT INDEX con la cláusula SET SEARCH PROPERTY LIST = <property_list_name>.

Asociar una lista de propiedades de búsqueda con un índice de texto completo en SQL Server Management Studio

Especifique un valor para Lista de propiedades de búsqueda en la página General del cuadro de diálogo Propiedades del índice de texto completo .

Consulta propiedades de búsqueda con CONTAINS

La sintaxis básica de CONTAINS para una consulta de texto completo referente a propiedades es la siguiente:

SELECT column_name
FROM table_name
WHERE CONTAINS (PROPERTY(column_name, 'property_name'), '<contains_search_condition>');

Por ejemplo, la siguiente consulta busca una propiedad indizada, Title, en la columna Document de la tabla Production.Document de la base de datos AdventureWorks . La consulta solo devuelve documentos cuya propiedad Title contengan las cadenas Maintenance o Repair.

USE AdventureWorks2025;
GO

SELECT Document
FROM Production.Document
WHERE CONTAINS (PROPERTY(Document, 'Title'), 'Maintenance OR Repair');
GO

En este ejemplo se supone que el IFilter para el documento extrae su propiedad Title, que la propiedad Title se agrega a la lista de propiedades de búsqueda y que la lista de propiedades de búsqueda está asociada al índice de texto completo.

Gestionar listas de propiedades de búsqueda

Después de crear una lista de propiedades de búsqueda, puedes verla, modificarla o eliminarla.

Ver y cambiar una lista de propiedades de búsqueda

Consulta y cambia una lista de propiedades de búsqueda usando Transact-SQL o SQL Server Management Studio.

Ver y cambiar una lista de propiedades de búsqueda en Transact-SQL

Utiliza la ALTER SEARCH PROPERTY LIST sentencia para añadir o eliminar propiedades de búsqueda.

Ver y cambiar una lista de propiedades de búsqueda en SQL Server Management Studio

  1. En el Explorador de objetos, expanda el servidor.

  2. Expanda Bases de datosy, a continuación, expanda la base de datos.

  3. Expanda Almacenamiento.

  4. Expanda Listas de propiedades de búsqueda para que se muestren las listas de propiedades de búsqueda.

  5. Haga clic con el botón derecho en la lista de propiedades y seleccione Propiedades.

  6. En el cuadro de diálogo Editor de lista de propiedades de búsqueda , utilice la cuadrícula de Propiedades para agregar o quitar propiedades de búsqueda:

    1. Para eliminar una propiedad de documento, seleccione el encabezado de la fila situado a la izquierda de la propiedad y pulse SUPR.
  7. Para añadir una propiedad de documento, selecciona la fila vacía al final de la lista, a la derecha de la *, e introduce los valores de la nueva propiedad.

    Para obtener información sobre estos valores, vea Editor de lista de propiedades de búsqueda. Para obtener información sobre cómo obtener estos valores para las propiedades definidas por Microsoft, consulte Buscar GUID del conjunto de propiedades e identificadores enteros de propiedades para las propiedades de búsqueda. Para obtener información sobre propiedades definidas por un fabricante de software independiente (ISV), vea la documentación de ese fabricante.

  8. Seleccione Aceptar.

Eliminar una lista de propiedades de búsqueda

No puedes eliminar una lista de propiedades de una base de datos mientras la lista está asociada a ningún índice de texto completo.

Eliminar una lista de propiedades de búsqueda en Transact-SQL

Use la instrucción DROP SEARCH PROPERTY LIST.

Eliminar una lista de propiedades de búsqueda en SQL Server Management Studio

  1. En el Explorador de objetos, expanda el servidor.

  2. Expanda Bases de datosy, a continuación, expanda la base de datos.

  3. Expanda Almacenamientoy, a continuación, expanda el nodo Listas de propiedades de búsqueda .

  4. Haz clic derecho en la lista de propiedades que quieres eliminar y selecciona Eliminar.

  5. Seleccione Aceptar.