Come eseguire query avanzate sui dati locali dell'app
[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]
Questo argomento spiega il modo in cui un'app può usare le API per i file nello spazio dei nomi Windows.Storage per eseguire query avanzate sui file nei dati dell'app archiviati localmente.
Le app di Windows Store possono usare l'API per i file per eseguire query avanzate sui contenuti archiviati nelle librerie dell'utente. Questa possibilità è utile soprattutto per le app che gestiscono contenuti avanzati, quali documenti, posta o file multimediali. I contenuti multimediali possono includere foto, musica e video. Puoi usare queste query per aggiungere caratteristiche quali ricerche di testo completo e filtri basati su query nei medatati archiviati nei file.
Cosa sapere
Tecnologie
Prerequisiti
- Puoi usare il servizio Windows Search per indicizzare i file nei dati locali archiviati di un'app.
Istruzioni
Passaggio 1: Attivare query avanzate per i dati dell'app
Per fornire query avanzate sui file, usa il servizio Windows Search per indicizzare questi file In genere i file dei dati archiviati a livello locale per un'app non sono indicizzati perché indicizzazione comporta un costo in termini di prestazioni, che non è necessario sostenere quando l'app non richiede funzionalità di query avanzate.
Per abilitare l'indicizzazione dei file nei dati di un'app è necessario creare una cartella di nome indexed all'interno della cartella dai dati dell'app, quindi archiviare in tale cartella i contenuti che desideri indicizzare. Il servizio Windows Search indicizza i contenuti dei file e dei metadati nella cartella indexed e in tutte le relative sottocartelle.
Per abilitare l'indicizzazione di file nei dati dell'app
Pianifica la cartella indexed da posizionare sotto localFolder. Ecco alcune regole relative a indexed e localFolder:
La cartella indexed deve essere creata sotto la radice localFolder.
Il servizio Windows Search indicizza le proprietà e il contenuto del file in questa cartella a un livello profondo. Ciò significa che il servizio Windows Search indicizza qualsiasi file archiviato localmente in questa cartella o nelle rispettive sottocartelle, inclusi tutti i livelli di sottocartelle.
Il servizio Windows Search supporta l'indicizzazione e la ricerca di testo completo per i formati di file HTML, PDF, XML e RTF, per i formati di file Microsoft Office e altro ancora. Per informazioni sui filtri per il servizio Windows Search, vedi il documento relativo ai gestori di filtri disponibili in Windows.
È consentita una sola cartella indexed per ogni app.
Per il nome di cartella indexed non viene fatta distinzione tra maiuscole e minuscole.
Anche se la cartella dei dati delle app è chiamata localFolder nell'API di Windows Runtime, il nome di questa cartella sarà LocalState nell'unità disco rigido fisica. Se vuoi accedere a questa cartella per fini di test, usa questo percorso di cartella:
%user%\ AppData\Local\Packages\%packageName%\LocalState
La struttura di cartelle sotto la cartella indexed può essere profonda, ma l'API di Windows non permette percorsi di file o cartelle di lunghezza superiore a MAX_PATH, ovvero superiori a 260 caratteri. Devi quindi assicurarti che i file o le cartelle nella cartella indexed non superino questo limite. Per altre informazioni su MAX_PATH, vedi il documento relativo al limite massimo di lunghezza del percorso.
Il servizio Windows Search indicizza solo i dati locali archiviati in modo simile all'indicizzazione di altri percorsi. In altre parole, vengono indicizzati solo i file archiviati localmente nella cartella indexed o nelle relative sottocartelle.
Crea la cartella indexed sotto localFolder. Non puoi creare la cartella indexed durante l'installazione. Puoi crearla solo durante l'esecuzione dell'app. Questo è un frammento di codice che mostra come creare la cartella indexed alla prima esecuzione dell'app:
Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", Windows.Storage.CreationCollisionOption.openIfExists).then( function (result) { //your code here });
Archivia i file e le cartelle in questa cartella indexed. Puoi usare StorageFolder o IStorageFolder per archiviare file e cartelle. Tutti i file e le cartelle archiviati nella cartella indexed saranno disponibili per le query avanzate mediante le API dei file nello spazio dei nomi Windows.Storage.
Passaggio 2: Recuperare contenuto indicizzato
Dopo l'indicizzazione dei dati dell'app da parte del servizio Windows Search, l'app potrà recuperare i dati tramite le API per i file nello spazio dei nomi Windows.Storage. Ad esempio, per eseguire query usa CreateFileQuery o CreateFolderQuery da una StorageFolder che rappresenta la cartella indexed o qualsiasi cartella figlio all'interno della cartella indexed.