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

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Anteriormente, el contenido de las propiedades de documento no podían distinguirse del contenido del cuerpo del documento. Esta limitación restringía las consultas de texto completo a búsquedas genéricas en documentos enteros. En cambio, ahora puede configurar un índice de texto completo para efectuar búsquedas referentes a determinadas propiedades, como Author y Title, en los tipos de documento admitidos en una columna varbinary, varbinary(max) (incluido FILESTREAM) o una columna de datos binarios de imagen . Esta forma de búsqueda se denomina 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 muchas propiedades de documento se encuentran los IFilters para tipos de documento de Microsoft Office (como .docx, .xlsx y .pptx). Por otra parte, el IFilter XML no emite propiedades.

Funcionamiento de la búsqueda de texto completo con las propiedades de búsqueda

Identificadores de propiedades internos

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 palabras clave es "Etiquetas". 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.

Mapping of search property list to internal table

Es probable que el identificador de propiedad interno sea diferente al identificador 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.

Indización 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. Por el contrario, si una propiedad no está registrada, se almacena en el índice de texto completo como si formara parte del cuerpo del documento y tiene el valor cero para el identificador de propiedad interno.

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 muestra, Documento 1, contiene tres propiedades (Title, Author y Keyword) y 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 Author se indiza 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.

Full-text index that uses a search property list

Los términos de búsqueda de la propiedad Title ("Favorite," "Biking" y "Trails") se asocian con el identificador de propiedad interno asignado a Title para este índice, 1. Los términos de búsqueda de la propiedad Keywords ("biking" y "mountain") se asocian con el identificador de propiedad interno asignado a Tags para este índice, 2. En el caso de los términos de búsqueda de la propiedad Author ("Jane" y "Doe") y los términos de búsqueda del cuerpo del documento, el identificador de propiedad interno es 0. El término "biking" tiene lugar en la propiedad Title, en la propiedad Keywords (Tags) y en el cuerpo del documento. Si se realizara una búsqueda de propiedades con el término "biking" en la propiedad Title o Keywords (Tags), en los resultados se devolvería este documento. Una consulta de texto completo genérica con el término "biking", devolvería también este documento, exactamente igual que si el índice no estuviera configurado para la búsqueda de propiedades. Una búsqueda de propiedades con el término "biking" en la propiedad Author 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.

En los corpus de prueba habituales de los documentos de Microsoft Word, Excel y PowerPoint, configuramos un índice de texto completo para que incluyera las propiedades de búsqueda típicas. Al indizar estas propiedades, aumentó el tamaño del índice de texto completo en un 5 por ciento aproximadamente. Prevemos que este incremento de tamaño aproximado será generalizado en la mayoría de los corpus de documentos. Sin embargo, el incremento del tamaño dependerá en última instancia del volumen de los datos de propiedades de un determinado corpus de documentos respecto al volumen de la generalidad de los datos.

Crear una lista de propiedades de búsqueda y habilitar la búsqueda de propiedades

Crear una lista de propiedades de búsqueda

Para crear una lista de propiedades de búsqueda con Transact-SQL

Use la instrucción CREATE SEARCH PROPERTY LIST (Transact-SQL) y proporcione al menos un nombre a la lista.

Para crear una lista de propiedades de búsqueda en 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 más información, consulte New Search Property List.

  8. Seleccione Aceptar.

Agregar 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 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 valores:

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

    • Un nombre descriptivo que resulte fácil de recordar a los usuarios. Algunas propiedades están asociadas con un nombre descriptivo conocido, como "Autor" o "Dirección particular", pero se puede especificar el nombre que resulte más apropiado para lo 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 se puede agregar 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, es posible que desee proporcionar información de una propiedad que no pueda extraerse fácilmente a partir de su nombre o describir el conjunto de propiedades de dicha propiedad.

Para obtener los valores de una lista de propiedades de búsqueda

Consulte Buscar GUID del conjunto de propiedades e identificadores de enteros de propiedad para las propiedades de búsqueda.

Para agregar una propiedad a una lista de propiedades de búsqueda con Transact-SQL

Use la instrucción ALTER SEARCH PROPERTY LIST (Transact-SQL) con los valores que obtuvo mediante uno de los métodos descritos en el artículo Búsqueda de GUID de conjuntos de propiedades e identificadores de 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.' );  

Para agregar una propiedad a una lista de propiedades de búsqueda en 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.

Asociar una lista de propiedades de búsqueda a 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.

Siempre y cuando el índice de texto completo permanezca asociado a esta lista de propiedades de búsqueda, la consulta de texto completo podrá usar la opción PROPERTY del predicado CONTAINS para buscar en propiedades que estén registradas en esa 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 obtener más información sobre cuándo cambiar la lista de propiedades de búsqueda hace que se vuelva a generar el índice, consulte "Comentarios" en ALTER FULLTEXT INDEX (Transact-SQL).

Para asociar una lista de propiedades de búsqueda a un índice de texto completo con Transact-SQL

Use la instrucción ALTER FULLTEXT INDEX (Transact-SQL) con la cláusula SET SEARCH PROPERTY LIST = <property_list_name>.

Para asociar una lista de propiedades de búsqueda a un índice de texto completo con 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 .

Consultar 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 contiene la cadena Maintenance o Repair

USE AdventureWorks2022;
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.

Administrar listas de propiedades de búsqueda

Ver y cambiar una lista de propiedades de búsqueda

Para cambiar una lista de propiedades de búsqueda con Transact-SQL

Use la instrucción ALTER SEARCH PROPERTY LIST (Transact-SQL) para agregar o quitar propiedades de búsqueda.

Para ver y cambiar las listas de propiedades de búsqueda en 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. Expande 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 quitar una propiedad de documento, haga clic en el encabezado de fila a la izquierda de la propiedad y presione SUPR.

    2. Para agregar una propiedad de documento, haga clic en la fila vacía en la parte inferior de la lista, a la derecha del símbolo *y escriba los valores para 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, vea Buscar GUID del conjunto de propiedades e identificadores de enteros de propiedad 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.

  7. Seleccione Aceptar.

Eliminar una lista de propiedades de búsqueda

No se puede quitar una lista de propiedades de una base de datos mientras la lista está asociada a un índice de texto completo.

Para eliminar una lista de propiedades de búsqueda con Transact-SQL

Use la instrucción DROP SEARCH PROPERTY LIST (Transact-SQL).

Para eliminar una lista de propiedades de búsqueda en 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. Haga clic con el botón derecho en la lista de propiedades que quiera eliminar y haga clic en Eliminar.

  5. Seleccione Aceptar.

Consulte también

Buscar GUID del conjunto de propiedades e identificadores de enteros de propiedad para las propiedades de búsqueda
Configurar y administrar filtros para búsquedas