Como fazer consultas avançadas nos dados locais do aplicativo

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Saiba como um aplicativo usa as APIs do arquivo no namespace Windows.Storage para fazer consultas avançadas nos arquivos nos dados armazenados locais do aplicativo.

Os aplicativos da Windows Store podem usar as APIs do arquivo para fazer consultas avançadas no conteúdo armazenado em bibliotecas de usuário. Isso é especialmente importante para aplicativos que gerenciam conteúdo avançado, como documentos, email ou mídia. As mídias podem incluir fotos, músicas e vídeos. Use essas consultas para adicionar recursos, como pesquisa de texto completo e filtragem baseada em consulta, aos metadados armazenados nos arquivos.

O que você precisa saber

Tecnologias

Pré-requisitos

Instruções

Etapa 1: Habilitar consultas avançadas nos dados de seu aplicativo

Para oferecer consultas avançadas nos arquivos, use o Serviço Windows Search para indexar os arquivos. Geralmente, os arquivos nos dados armazenados locais de um aplicativo não são indexados. Isso ocorre porque a indexação exige um custo no desempenho que é desnecessário quando o aplicativo não exige funcionalidade de consulta avançada.

Para habilitar a indexação de arquivos nos dados do aplicativo, você precisa criar uma pasta chamada indexed sob a pasta de dados do aplicativo. Depois, armazene o conteúdo que deseja indexar nessa pasta. O Serviço Windows Search indexa o conteúdo e os metadados do arquivo nessa pasta indexed e em todas as subpastas.

JJ835814.wedge(pt-br,WIN.10).gifPara habilitar a indexação de arquivos nos dados do aplicativo

  1. Planeje a pasta indexed para ficar abaixo de localFolder. Veja algumas regras para indexed e localFolder:

    • A pasta indexed tem de ser criada abaixo da raiz localFolder.

    • O Serviço Windows Search indexa as propriedades e o conteúdo do arquivo nessa pasta profundamente. Ou seja, o Serviço Windows Search indexa qualquer arquivo localmente armazenado nessa pasta ou em suas subpastas, o que inclui todos os níveis de subpastas.

      O Serviço Windows Search é compatível com a indexação e a pesquisa de texto completo para os formatos de arquivo HTML, PDF, XML e RTF, para arquivos do Microsoft Office e muito mais. Para saber sobre os filtros do Serviço Windows Search, veja Manipulador de filtros incluídos no Windows.

    • Você só pode ter uma pasta indexed por aplicativo.

    • O nome da pasta indexed não diferencia maiúsculas de minúsculas.

    • Embora a pasta de dados do aplicativo seja chamada localFolder na API do Tempo de Execução do Windows , seu nome é LocalState no disco rígido físico. Para acessar essa pasta para fins de teste, use este caminho de pasta:

      %user%\ AppData\Local\Packages\%packageName%\LocalState
      
    • A estrutura de pastas abaixo da pasta indexed pode ser profunda, mas a API do Windows não permite que o comprimento do caminho de um arquivo ou pasta seja maior que MAX_PATH, definido como 260 caracteres. Por isso, verifique se os arquivos ou as pastas na pasta indexed não excedem esse limite. Para saber mais sobre MAX_PATH, veja Limite de comprimento de caminho máximo.

    • Assim como em outros locais, o Serviço Windows Search indexa apenas os dados locais armazenados. Em outras palavras, somente os arquivos localmente armazenados na pasta indexed ou em suas subpastas são indexados.

  2. Crie a pasta indexed abaixo da localFolder. Você não pode criar a pasta indexed durante a instalação. Você só pode criá-la somente enquanto o aplicativo está em execução. Veja um trecho de código que mostra como criar a pasta indexed na primeira execução do aplicativo:

    
    Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", 
        Windows.Storage.CreationCollisionOption.openIfExists).then(
                    function (result) {
                       //your code here
                    });
    
  3. Armazene seus arquivos e pastas nessa pasta indexed. Você pode usar StorageFolder ou IStorageFolder para armazenar arquivos e pastas. Todos os arquivos e pastas armazenados nessa pasta indexed ficam disponíveis para consultas avançadas usando as APIs do arquivo no namespace Windows.Storage.

Etapa 2: Obter conteúdo indexado

Depois que o Serviço Windows Search indexar os dados do aplicativo, o aplicativo poderá obter os dados através das APIs do arquivo no namespace Windows.Storage. Por exemplo, para fazer consultas, use CreateFileQuery ou CreateFolderQuery de uma StorageFolder que represente a pasta indexed ou qualquer pasta filho abaixo da pasta indexed.

Tópicos relacionados

Windows.Storage

Serviço Windows Search

StorageFolder

IStorageFolder

ApplicationData.localFolder

IFilter