Cómo realizar consultas enriquecidas en datos locales de aplicaciones
[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente
Obtén información sobre cómo una aplicación puede usar las API de archivo del espacio de nombres Windows.Storage para realizar consultas enriquecidas en archivos de los datos de aplicación almacenados localmente.
Las aplicaciones de la Tienda Windows pueden usar las API de archivo para realizar consultas enriquecidas en el contenido almacenado en bibliotecas de usuario. Esto resulta especialmente valioso para aplicaciones que administran contenido enriquecido, como documentos, correo o multimedia. Los archivos multimedia pueden incluir fotos, música y vídeos. Puedes usar estas consultas para agregar características como búsqueda de texto completo y filtros basados en consultas en los metadatos almacenados dentro de los archivos.
Lo que debes saber
Tecnologías
Requisitos previos
- El servicio Windows Search se usa para indizar los archivos de los datos de aplicación almacenados localmente.
Instrucciones
Paso 1: Habilita consultas enriquecidas para tus datos de aplicación
Para proporcionar consultas enriquecidas en archivos, usa el servicio Windows Search para indizar los archivos. Normalmente, los archivos en los datos de una aplicación almacenados localmente no se indizan. El motivo es que la indización conlleva un costo de rendimiento que es innecesario cuando la aplicación no necesita la funcionalidad de consulta enriquecida.
Para habilitar la indización de archivos en los datos de aplicación, debes crear una carpeta llamada indexed en la carpeta de datos de aplicación. Después, almacena en esa carpeta el contenido que quieres indizar. El servicio Windows Search indiza el contenido y los metadatos de los archivos de esta carpeta indexed y de todas sus subcarpetas.
Para habilitar la indización de archivos dentro de los datos de aplicación
Planea la carpeta indexed que irá en localFolder. Estas son algunas reglas acerca de indexed y localFolder:
La carpeta indexed debe crearse en la raíz localFolder.
El servicio Windows Search indiza en profundidad las propiedades y el contenido de los archivos de esta carpeta. Esto quiere decir que el servicio Windows Search indiza todos los archivos que están almacenados localmente en esta carpeta o en sus subcarpetas, lo que incluye todos los niveles de subcarpetas.
El servicio Windows Search admite la búsqueda e indización de texto completo para los formatos de archivo HTML, PDF, XML y RTF o los formatos de archivo de Microsoft Office, entre otros. Para obtener información acerca de los filtros para el servicio Windows Search, consulta el tema sobre los controladores de filtros incluidos en Windows.
Solo puedes tener una carpeta indexed por aplicación.
El nombre de la carpeta indexed no distingue entre mayúsculas y minúsculas.
Aunque la carpeta de datos de aplicación se denomina localFolder en la API de Windows en tiempo de ejecución, su nombre es LocalState en la unidad de disco duro física. Si quieres acceder a esta carpeta con fines de prueba, usa esta ruta de acceso a la carpeta:
%user%\ AppData\Local\Packages\%packageName%\LocalState
La estructura de carpetas dentro de la carpeta indexed puede ser profunda, pero la API de Windows no permite que la ruta de acceso a un archivo o carpeta tenga una longitud superior a MAX_PATH, que se define como 260 caracteres. Por lo tanto, debes asegurarte de que los archivos o carpetas situados en la carpeta indexed no excedan este límite. Para obtener más información acerca de MAX_PATH, consulta el tema sobre el límite máximo de la longitud de las rutas de acceso.
De forma similar a la indización que el servicio Windows Search realiza en otras ubicaciones, solo indiza los datos almacenados localmente. En otras palabras, solo se indizan los archivos que están almacenados localmente en la carpeta indexed o en sus subcarpetas.
Crea la carpeta indexed en localFolder. No puedes crear la carpeta indexed durante la instalación, Solo se puede crear mientras la aplicación se está ejecutando. Este es un fragmento de código que muestra cómo crear la carpeta indexed cuando la aplicación se ejecuta por primera vez:
Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", Windows.Storage.CreationCollisionOption.openIfExists).then( function (result) { //your code here });
Almacena tus archivos y carpetas en esta carpeta indexed. Puedes usar StorageFolder o IStorageFolder para almacenar archivos y carpetas. Todos los archivos y carpetas que almacenes en esta carpeta indexed estarán disponibles para realizar consultas enriquecidas usando las API de archivo del espacio de nombres Windows.Storage.
Paso 2: Recuperar contenido indizado
Después de que el servicio Windows Search indice los datos de aplicación, la aplicación puede acceder a los datos mediante las API de archivo del espacio de nombres Windows.Storage. Por ejemplo, para realizar consultas usa CreateFileQuery o CreateFolderQuery desde una StorageFolder que represente la carpeta indexed o cualquiera de las carpetas secundarias de la carpeta indexed.