Windows Search como plataforma de desarrollo
Para indexar el contenido y las propiedades de los nuevos formatos de archivo y almacenes de datos, Microsoft Windows Search debe ampliarse con complementos.
Antes de que un desarrollador de terceros de nuevos formatos de archivo y almacenes de datos pueda obtener esos formatos y almacenes para que aparezcan en los resultados de la consulta en el Explorador de Windows, el desarrollador debe hacer lo siguiente:
- Implemente un origen de datos de Shell para ampliar el espacio de nombres de Shell.
- Exponga elementos en un almacén de datos (si agregan un nuevo almacén de datos, ya que tendría que indizarse).
- Desarrolle un controlador de protocolo para que Windows Search pueda acceder a los datos para la indexación.
Este tema se organiza de la siguiente manera:
- Introducción
- Información general sobre escenarios de desarrollo de búsqueda
- Introducción a los controladores
- Instrucciones del instalador de complementos
- Nota para los implementadores
- Recursos adicionales
- Temas relacionados
Introducción
Antes de empezar a crear una aplicación de Windows Search, recuerde que la manera preferida de hacerlo es a través de un origen de datos de Shell. Un origen de datos de Shell extiende el espacio de nombres shell y expone los elementos de un almacén de datos. A continuación, el sistema de Windows Search puede indexar los elementos del almacén de datos mediante un controlador de protocolo. Este enfoque indirecto para acceder a Windows Search mediante la implementación de un origen de datos de Shell es preferible porque proporciona acceso a toda la funcionalidad de Shell. Hacerlo de esta manera garantiza una experiencia de usuario razonable.
Si desea que los resultados de la consulta aparezcan en el Explorador de Windows, debe implementar un origen de datos de Shell para poder crear un controlador de protocolo para ampliar el índice. Sin embargo, si todas las consultas serán mediante programación (a través de OLE DB por ejemplo) e interpretadas por el código de la aplicación en lugar del Shell, se prefiere un espacio de nombres de Shell, pero no es necesario.
Se requiere un controlador de protocolo para que Windows obtenga conocimiento del contenido del archivo, como elementos de bases de datos o tipos de archivo personalizados. Aunque Windows Search puede indexar el nombre y las propiedades del archivo, Windows no tiene conocimiento del contenido del archivo. Como resultado, estos elementos no se pueden indexar ni exponer en el Shell de Windows. Al implementar un controlador de protocolo personalizado, puede exponer estos elementos. Para obtener una lista de los controladores identificados por el escenario de desarrollador que está intentando lograr, consulte Información general de los controladores.
Información general sobre escenarios de desarrollo de búsqueda
Los escenarios de desarrollo más comunes de Windows Search son:
- Adición de un nuevo almacén de datos
- Agregar un nuevo formato de archivo
- Consumo de resultados de Windows Search
Agregar un nuevo almacén de datos
Solo necesita un almacén de datos de Shell para Windows Search si va a agregar un nuevo almacén de datos para que se indizará. Un almacén de datos es un repositorio de datos que se puede exponer al modelo de programación de Shell como contenedor mediante un origen de datos de Shell. A continuación, el sistema de Windows Search puede indexar los elementos de un almacén de datos mediante un controlador de protocolo. El controlador de protocolo implementa el protocolo para acceder a un origen de contenido en su formato nativo. Las interfaces ISearchProtocol e ISearchProtocol2 se usan para implementar un controlador de protocolo personalizado para expandir los orígenes de datos que se pueden indexar. Para obtener información sobre cómo crear un origen de datos de Shell, vea Implementación de las interfaces de objeto de carpeta básicas.
Agregar un nuevo formato de archivo
Si agrega un nuevo formato de archivo personalizado, debe desarrollar un controlador de filtro o un controlador de propiedades, pero no ambos. Un filtro es una implementación de la interfaz IFilter . Abre archivos de un tipo de archivo determinado y filtra las propiedades y fragmentos de texto para el indexador. Los filtros están asociados a tipos de archivo, como se indica en extensiones de nombre de archivo, tipos MIME o identificadores de clase (CLSID). Aunque un filtro puede controlar varios tipos de archivo, cada tipo de archivo funciona solo con un filtro.
Un controlador de propiedades traduce los datos almacenados en un archivo en un esquema estructurado reconocido por y a los que puede acceder el Explorador de Windows, Windows Search y otras aplicaciones. A continuación, estos sistemas pueden interactuar con el controlador de propiedades para escribir y leer propiedades en y desde un archivo. Los datos traducidos incluyen la vista de detalles, la información, el panel de detalles, las páginas de propiedades, etc. Cada controlador de propiedades está asociado a un tipo de archivo determinado, identificado por la extensión de nombre de archivo. Necesita un controlador de propiedades para hacer lo siguiente:
- Muestra las propiedades de elementos no indexados en la interfaz de usuario.
- Admite la escritura de propiedades.
Consumo de resultados de búsqueda de Windows
En las secciones siguientes se describen varias maneras de consumir resultados de Windows Search:
- Consulta de datos
- Consulta de almacenes de datos remotos (búsqueda federada)
- Indexación de archivos y elementos
- Indexación de un almacén de datos
- Administración del proceso de indexación
- Integración del sistema de propiedades de Windows con aplicaciones de Windows Search
Consulta de datos
Los desarrolladores que escriben aplicaciones sobre el sistema combinado de propiedades de Windows Search y Windows pueden tener acceso a archivos y elementos independientemente del tipo de aplicación o archivo. Hay dos maneras de que las aplicaciones accedan a los datos del indexador:
- Las aplicaciones se comunican directamente con OLE DB mediante el envío de consultas de Windows Search Lenguaje de consulta estructurado (SQL) al proveedor OLE DB de Windows Search para recuperar los resultados. Las consultas se pueden construir manualmente o mediante la interfaz ISearchQueryHelper para generar sql a partir de palabras clave de búsqueda y sintaxis de consulta avanzada (AQS).
- Las aplicaciones funcionan a través de la capa de Shell. La ventaja de la capa shell es que también admite otros orígenes como grep. Sin embargo, la desventaja es que no todas las características del indexador están disponibles.
Otra opción es usar los protocolos search-ms:// y search://, que ejecutan búsquedas basadas en direcciones URL representadas a través del Explorador de Windows. Esta opción permite el desarrollo más ligero, pero no devuelve resultados ni selecciones de usuario de la vista de resultados a la aplicación que realiza la llamada. Además, al igual que otros protocolos, las aplicaciones de búsqueda de terceros pueden asumir el ms:// de búsqueda y search:// protocolos si las aplicaciones cumplen con el conjunto de características necesario. Para obtener más información sobre la consulta, vea Proceso de consulta en Windows Search y Consulta del índice mediante programación.
Consulta de almacenes de datos remotos (búsqueda federada)
En Windows 7 y versiones posteriores, la búsqueda federada ofrece un nuevo proveedor de búsqueda que consulta almacenes de datos remotos a través de servidores web, a través del protocolo OpenSearch y enumera los resultados como fuentes RSS o Atom XML. Los conectores de búsqueda son uniones de espacio de nombres que simulan el comportamiento de las carpetas mediante un proveedor de búsqueda. Para obtener más información sobre la federación de búsqueda en almacenes de datos remotos en Windows 7, consulta Búsqueda federada en Windows.
Indexación de archivos y elementos
El contenido que se indexa se basa en los tipos de datos y archivos admitidos a través de complementos incluidos con Windows Search y las reglas de inclusión y exclusión predeterminadas para las carpetas del sistema de archivos. Por ejemplo, los filtros incluidos en La búsqueda de ventanas admiten más de 200 tipos comunes de datos, incluidos documentos de Microsoft Office, correo electrónico de Microsoft Outlook (junto con el controlador de protocolo MAPI), archivos de texto sin formato, HTML y muchos más. Para obtener una lista completa de los tipos de archivo admitidos de forma nativa, consulte ¿Qué se incluye en el índice?
El índice se puede extender con controladores de propiedades y filtros para exponer el contenido y las propiedades de los nuevos formatos de archivo al índice y al Explorador de Windows. Los filtros son una implementación de la interfaz IFilter . Hay dos tipos de filtros: uno que interactúa con elementos individuales, como archivos y otro que interactúa con contenedores como carpetas. Los filtros son multiuso en que admiten fragmentación de datos, contenido de texto, algunas propiedades y varios idiomas.
En cambio, los controladores de propiedades tienen un propósito más específico: exponer las propiedades de tipos de archivo específicos identificados por extensiones de nombre de archivo. Un controlador de propiedades para un tipo de archivo puede habilitar las propiedades get y set, y puede enumerar las propiedades asociadas a ese tipo de archivo. A diferencia de los filtros, los controladores de propiedades no admiten el contenido de texto ni los datos de la mandilla, y los controladores de propiedades no tienen ninguna manera de indicar en qué idioma se encuentra una propiedad de texto a menos que admitan la escritura de propiedades.
Indexación de un almacén de datos
El índice se puede ampliar con controladores de protocolo para proporcionar acceso a almacenes de datos propietarios. Por ejemplo, los archivos y elementos contenidos en almacenes de datos que no son del sistema de archivos (como bases de datos y almacenes de correo electrónico) requieren un controlador de protocolo para asignar desde una dirección URL a una secuencia. Los controladores de protocolo también pueden determinar opcionalmente los filtros correctos que se usarán para extraer información de una secuencia. Los filtros enumeran las direcciones URL del almacén de datos. A continuación, los elementos se indexan individualmente mediante el filtro adecuado o el controlador de propiedades. Para obtener más información, vea Extender el índice.
Administración del proceso de indexación
Los desarrolladores de aplicaciones pueden controlar el ámbito y la frecuencia de la indexación de Windows Search mediante varias interfaces de administración. Estas interfaces incluyen funcionalidad para agregar y quitar los directorios en los que el indexador examina los cambios, notificar manualmente el índice de cambios a los datos, comprobar el estado del indexador y forzar la reindización de algunos o todos los datos. Para obtener más información, consulte Administración del índice.
Integración del sistema de propiedades de Windows con aplicaciones de Windows Search
El sistema de propiedades de Windows es un sistema extensible de lectura y escritura de definiciones de datos que proporciona una manera uniforme de expresar metadatos sobre los elementos de Shell. El sistema de propiedades de Windows en Windows Vista y versiones posteriores permite almacenar y recuperar metadatos para los elementos de Shell. Un elemento de Shell es cualquier elemento de contenido único, como un archivo, una carpeta, un correo electrónico o un contacto. Una propiedad es un fragmento de metadatos individual asociado a un elemento de Shell. Los valores de propiedad se expresan como una estructura PROPVARIANT .
Se incluye una amplia lista de propiedades comunes para una serie de tipos de elementos comunes, como fotos, música, documentos, mensajes, contactos y archivos. Los desarrolladores también pueden introducir sus propias propiedades en la plataforma si ninguna propiedad existente satisface sus necesidades. Para obtener más información sobre la integración de aplicaciones con el sistema de propiedades de Windows, vea Developing Property Handlers.
Introducción a los controladores
Un controlador es un objeto modelo de objetos componentes (COM) que proporciona funcionalidad para un elemento de Shell. La mayoría de los orígenes de datos de Shell ofrecen un sistema extensible para enlazar controladores a elementos. Por ejemplo, la carpeta del sistema de archivos usa el sistema de asociaciones para buscar los controladores de un tipo de archivo determinado. Se requiere un controlador específico para cada tipo de archivo. Se requiere un controlador de filtro para el tipo de archivo adobe Acrobat .pdf, por ejemplo, se requiere otro controlador de filtros para el formato de archivo .doc, etc.
Los diferentes controladores tienen cierta commonalidad. En Windows Vista y versiones posteriores, todos los controladores deben usar una de las siguientes interfaces para inicializar el controlador: IInitializeWithStream, IInitializeWithItem o IItinitializeWithFile.
En la tabla siguiente se enumeran las tareas de desarrollador de alto nivel, el tipo de controlador necesario para cada tarea y se proporciona un vínculo a información conceptual sobre cómo realizar cada tarea.
Tarea | Controlador | Información conceptual |
---|---|---|
Acceso a las propiedades de un archivo para la indexación | Controlador de propiedades | Desarrollar controladores de propiedades Propiedades definidas por el sistema para formatos de archivo personalizados |
Agregar formatos de Portapapeles para el objeto de datos (IDataObject) de un elemento (los objetos de datos se usan en escenarios de arrastrar y colocar y copiar/pegar). | Controlador de objeto de datos | Crear controladores de datos |
Agregar verbos para un elemento que se muestran normalmente en un menú contextual | Controlador de menú contextual | Crear controladores de menú contextual Personalización de un menú contextual mediante verbos dinámicos |
Asociación de un tipo de archivo con un icono específico | Controlador de iconos | Creación de controladores de iconos |
Creación de hojas de propiedades con imágenes y controles de interfaz de usuario que permiten la interacción personalizada con un tipo de archivo | Controlador de la hoja de propiedades | Controladores de hoja de propiedades |
Habilitación de un tipo de elemento para admitir escenarios de arrastrar y colocar y copiar y pegar | Controlador de colocación | Transferencia de objetos de Shell con arrastrar y colocar y el Portapapeles |
Extracción de fragmentos de propiedades de texto y documento para la indexación | Controlador de filtros | Desarrollo de controladores de filtros |
Indexación de un nuevo tipo de archivo | Controlador de filtros, controlador de propiedades | Desarrollo de controladores de filtros Desarrollar controladores de propiedades |
Indexación del contenido de un almacén de datos | Controlador de protocolo | Desarrollo de controladores de protocolo |
Vista previa de una vista simplificada del elemento shell en el panel de vista previa del Explorador de Windows | Controlador de vista previa | Controladores de vista previa |
Proporcionar texto emergente cuando un mouse mantiene el puntero sobre un objeto de interfaz de usuario | Controlador de recuadro informativo | Creación de controladores de extensión de Shell (personalización de información) |
Proporcionar una imagen estática para representar un elemento de Shell | Controlador de miniaturas | Controladores de miniaturas |
En la tabla siguiente se enumeran los controladores y las interfaces para implementar cada tipo de controlador.
Controlador | Interfaces |
---|---|
Controlador de colocación | IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit |
Controlador de objeto de datos | IDataObject, IPersistFile |
Controlador de filtros | Ifilter |
Controlador de iconos | IExtractIcon Opcional: IPersist, IPersistFile |
Controlador de recuadro informativo | IQueryInfo |
Controlador de vista previa | IPreviewHandler |
Controlador de propiedades | IPropertyStore |
Controlador de protocolo | IFilter, ISearchProtocol, IUrlAccessor Opcional: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4 |
Controlador de la hoja de propiedades | IShellExtInit, IShellPropSheetExt |
Controlador de menú contextual | IContextMenu, IExplorerCommand, IShellExtInit |
Controlador de miniaturas | IThumbnailProvider |
Nota
A veces, un controlador de propiedades se inclina como controlador de metadatos. Un origen de datos de Shell se conoce a veces como extensión de espacio de nombres de Shell. A veces, un controlador de tipo de archivo se conoce como controlador de extensión de Shell o una extensión de Shell.
Para obtener más información sobre cómo crear controladores, vea Creating Shell Extension Handlers. Para obtener más información sobre las propiedades, vea Sistema de propiedades de Windows.
Instrucciones del instalador de complementos
Use las instrucciones siguientes al crear un instalador de complemento:
- El instalador debe usar el instalador EXE o MSI.
- Se deben proporcionar notas de la versión.
- Se debe crear una entrada Agregar o quitar programas para cada complemento instalado.
- El instalador debe asumir toda la configuración del Registro para el tipo de archivo determinado o almacenar que comprende el complemento actual.
- Si se sobrescribe un complemento anterior, el instalador debe notificar al usuario.
- Si un complemento más reciente ha sobrescrito un complemento anterior, el usuario debería poder restaurar la funcionalidad del complemento anterior y convertirlo en el complemento predeterminado de nuevo para ese tipo de archivo o almacén.
Nota para los implementadores
Antes de crear un controlador de filtros o propiedades, los desarrolladores deben tener en cuenta lo siguiente:
- Estos controladores son extensiones en proceso que se cargan en procesos que no se controlan, como el proceso de demonio de filtro, el Explorador de Windows (búsqueda grep) y hosts de terceros como Windows Mail.
- Debe escribir código seguro lo suficientemente sólido como para controlar formas arbitrariamente dañadas del formato de archivo que se crearon para atacar el sistema.
- El complemento no debe filtrar los recursos que generarán problemas para los procesos del host.
- El complemento no debe bloquearse, ya que también bloqueará los procesos del host y ralentizará el proceso de filtrado.
- Dado que estos controladores se ejecutan en un proceso del sistema en segundo plano, deben realizar rápidamente con un mínimo de CPU y E/S consumidas para satisfacer los requisitos de rendimiento del sistema.
Por lo tanto, los desarrolladores deben escribir estos complementos con experiencia en la creación de código de nivel de sistema.
Recursos adicionales
- Para obtener información sobre cómo crear un origen de datos de Shell, vea Implementación de las interfaces de objeto de carpeta básicas.
- Para los orígenes de datos que necesitan usar el objeto de vista de carpetas del sistema predeterminado de Shell (DefView), consulte Implementación de una vista de carpetas, función SHCreateShellFolderView y estructura SFV_CREATE . Los orígenes de datos que usan el objeto de vista de carpetas del sistema predeterminado de Shell (DefView) deben implementar el siguiente conjunto de interfaces: IShellFolder, IShellFolder2, IPersistFolder2 y (opcionalmente) IPersistFolder3. Si la implementación de IShellFolder no usa SHCreateShellFolderView para crear DefView, es posible que el objeto de vista shell necesite IFolderView.
- ISearchFolderItemFactory es la interfaz principal para los consumidores del origen de datos de Shell conocido como DBFolder. Para obtener más información sobre DBFolder, vea la descripción de la constante STR_PARSE_WITH_PROPERTIES en Enlazar claves de cadena de contexto. Vea también Matrices de asociación e IPropertySystem::GetPropertyDescriptionListFromString.
- Para obtener información sobre OLE DB, vea Información general sobre la programación de OLE DB. Para obtener información sobre el proveedor de datos de .NET Framework para OLE DB, consulte la documentación del espacio de nombres System.Data.OleDb .
- Para paneles de mensajes compatibles con la comunidad en tecnologías de búsqueda, vea Windows: Search Forums on MSDN(Windows: Buscar foros en MSDN).
- Para obtener ejemplos de código relacionados, consulta Ejemplos de código de Windows Search.
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de