Formato de arquivo de pesquisa salvo

No Windows Vista e posteriores, os usuários podem salvar pesquisas como uma Pasta de Pesquisa gerada por um arquivo XML que armazena a consulta em um formulário que pode ser usado pelo subsistema de pesquisa do Windows. Este tópico descreve o formato de arquivo (*.search-ms) e inclui as seguintes seções:

Visão geral das pesquisas salvas

Os usuários podem salvar uma consulta de pesquisa como uma Pasta de Pesquisa, uma pasta virtual exibida no Windows Explorer na pasta Pesquisas. Abrir uma Pasta de Pesquisa executa a pesquisa salva e exibe resultados atualizados. O arquivo de pesquisa salvo armazena a consulta em um formato em que a Pesquisa do Windows pode agir, especificando o que pesquisar, onde pesquisar e como apresentar os resultados.

A pesquisa salva é gerada a partir de um arquivo XML (*.search-ms) na pasta %userprofile%\Searches. Os dados são divididos em três elementos primários no arquivo XML:

  • <viewInfo> especifica informações de apresentação
  • <especifica a consulta> (informações de consulta de pesquisa
  • <properties> especifica as propriedades do próprio arquivo *.search-ms

O exemplo a seguir mostra a estrutura de alto nível de um arquivo de pesquisa salvo.

<?xml version="1.0"?>
<persistedQuery version="1.0">

    <viewInfo ...>
        ...
    </viewInfo>

    <query>
        ...
    </query>

    <properties>
        ...
    </properties>

</persistedQuery>

<Elemento viewInfo>

O <elemento viewInfo> especifica como os resultados são apresentados ao usuário final. O exemplo a seguir mostra a estrutura do elemento .

...
    <viewInfo viewMode=""
              iconSize=""
              stackIconSize=""
              autoListFlags=""
              folderFlags=""
              taskFlags=""
              displayName="">

        <visibleColumns>
            <column viewField=""/>
        </visibleColumns>

        <frequentlyUsedColumns>
            <column viewField= ""/>
        </frequentlyUsedColumns>

        <columnChooserColumns >
            <column viewField=""/>
        </columnChooserColumns >

        <groupBy viewField=""
                 direction=""/>

        <stackList>
            <stack viewField=""/>
        </stackList>

        <sortList>
            <sort viewField=""
                  direction=""/>
        </sortList>
    </viewInfo>
...

<Atributos viewInfo>

A tabela a seguir descreve os atributos do <elemento viewInfo> .

Atributo Descrição Valores
Viewmode Especifica a exibição de pasta. Detalhes | Ícones | Telhas
Iconsize Controla o tamanho padrão dos ícones e miniaturas dos itens quando não são empilhados. Inteiro entre 16 e 256
stackIconSize Apenas para uso interno. Não use. n/d
displayName Apenas para uso interno. Não use. n/d
autoListFlags Apenas para uso interno. Não use. n/d
folderFlags Apenas para uso interno. Não use. n/d
taskFlags Apenas para uso interno. Não use. n/d

<elementos filho viewInfo>

Os elementos filho do <elemento viewInfo> especificam quais colunas aparecem nos resultados da pesquisa do Windows Explorer e como os resultados são agrupados e classificados. Cada elemento filho contém um conjunto ordenado de colunas, identificado por nomes canônicos de propriedades do sistema (por exemplo, System.DisplayName). Se não for definido no arquivo de pesquisa salvo, os resultados da pesquisa serão apresentados com um conjunto padrão de colunas apropriado para os tipos de arquivo exibidos.

Elemento Descrição Valores
visibleColumns Especifica uma lista ordenada de colunas a serem exibidas na exibição de resultados. O usuário pode alterar essa lista. Qualquer propriedade do sistema.
freqüentementeUsedColumns Apenas para uso interno. Não use. n/d
columnChooserColumns Apenas para uso interno. Não use. n/d
Groupby Especifica uma única propriedade do sistema pela qual agrupar os resultados. O usuário pode alterar esse valor. Qualquer propriedade do sistema.
Sortlist Especifica uma lista ordenada de colunas para classificar os resultados. Até quatro propriedades do sistema. O usuário pode alterar essa lista.
stackList Apenas para uso interno. Não use. n/d

<Elemento query>

O <elemento de consulta> especifica os atributos que definem como os resultados são consultados. O exemplo a seguir mostra a estrutura do elemento .

...
    <query>
        <providers>
            <provider clsid=""/>    <!-- Do not use -->
        </providers>

        <subQueries>
            <subQuery path=""/>           <!-- Do not use -->
            <subQuery knownSearch=""/>    <!-- Do not use -->
        </subQueries>

        <scope>
            <include path=""        nonRecursive=""/>   <!-- [path of location to include] -->
            <include knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
            <exclude path=""        nonRecursive=""/>   <!-- [path of location to exclude] -->
            <exclude knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
        </scope>

        <kindList>
            <kind name=""/>     <!-- Kind value -->
        </kindList>

        <conditions>
            <condition type="" ...>     <!-- andCondition | orCondition | notCondition | leafCondition -->
                <attributes>
                    <attribute attributeID="" .../> <!-- Do not use -->
                </attributes>
            </condition>
        </conditions>
    </query>
...

<consultar elementos> filho

A tabela a seguir descreve os elementos filho do <elemento scope> .

Elemento Descrição Valor
providers Apenas para uso interno. Não use. n/d
Subconsultas Apenas para uso interno. Não use. n/d
Escopo Identifica os locais a serem incluídos ou excluídos na pesquisa. Um caminho ou uma ID de pasta conhecida do local a ser incluído ou excluído. Esse elemento também pode especificar se a pesquisa deve incluir/excluir caminhos filho (uma pesquisa superficial ou profunda).
kindList Identifica o tipo de arquivo a ser pesquisado. Qualquer valor System.Kind.
condições Especifica regras para filtrar resultados. Por exemplo, os resultados podem ser limitados a emails enviados por ou a uma pessoa específica. andCondition, orCondition, notCondition, leafCondition.

<Elemento scope>

O <elemento de escopo> identifica os locais a serem incluídos ou excluídos da pesquisa. O <elemento scope> deve conter pelo menos um <elemento filho de inclusão> presente e zero ou mais <elementos de exclusão> . Os locais podem ser especificados como um caminho (há suporte para variáveis de ambiente) ou como um identificador de pasta conhecido. Além disso, cada um desses locais pode ser especificado para ser pesquisado em profundidade ou superficial definindo o nonRecursive como "true" ou "false" (o padrão é recursivo). Partes da lista incluída de locais podem ser excluídas especificando elementos de exclusão.

O seguinte mostra um <elemento de escopo> que pesquisará a pasta especial de documentos, mas não seus filhos, o volume "E:" e seus filhos, mas não o diretório "E:\windows" ou qualquer um de seus filhos:

...
    <query>
        ...
        <scope>
            <include knownFolder="{FDD39AD0-238F-46AF-ADB4-6C85480369C7}" nonRecursive="true"/>
            <include path="E:\"/>
            <exclude path="E:\Windows" nonRecursive="false"/>
        </scope>
        ...
    </query>
...

<Elemento kindList>

Esses elementos definem a união do "tipo" de itens que devem aparecer na biblioteca. Os valores válidos são:

  • calendário
  • comunicação
  • contact
  • documento
  • email
  • feed
  • folder
  • jogo
  • instantmessage
  • Diário
  • link
  • Filme
  • music
  • observação
  • picture
  • programa
  • recordedtv
  • searchfolder
  • task
  • video
  • webhistory
  • item
  • other

<Elemento conditions>

As condições são filtros em relação aos quais os resultados da pesquisa são comparados. Por exemplo, você pode filtrar resultados que atendam a determinados critérios, como nome do autor ou tamanho do arquivo. O conjunto de condições é incorporado em uma única árvore de condição com branches AND, OR e NOT lógicos.

O exemplo a seguir mostra a estrutura do <elemento condition> .

...
    <query>
        ...
        <conditions>
            <condition type="" ...>
                <attributes>
                    <attribute attributeID="" .../>
                </attributes>
            </condition>
        </conditions>
    </query>
...

O tipo de condição pode ser um dos seguintes:

Type Descrição Atributos disponíveis
Andcondition Conjunção de duas ou mais condições filho n/d
Orcondition Disjunção de duas das mais condições filho n/d
Notcondition Negação de uma condição filho n/d
leafCondition Compara uma propriedade com o valor property, propertyType, operator, value, valuetype

Os <atributos do elemento leafCondition> identificam as propriedades e os valores com os quais os resultados são filtrados.

Exemplo: <elemento conditions>

O exemplo a seguir filtra os resultados de todos os itens não lidos criados por João. Ou seja, a propriedade System.IsRead é false e a cadeia de caracteres "john" aparece nas propriedades System.Author ou System.ItemAuthors.

...
    <query>
        ...
        <conditions>

            <condition type="andCondition">

                <condition type="leafCondition"
                           property="System.IsRead"
                           operator="eq"
                           value="FALSE"/>

                <condition type="orCondition">

                    <condition type="leafCondition"
                               property="System.Author"
                               propertyType="string"
                               operator="wordmatch"
                               value="John"
                               valueType="System.StructuredQueryType.String"/>

                    <condition type="leafCondition"
                               property="System.ItemAuthors"
                               propertyType="string"
                               operator="wordmatch"
                               value="John"
                               valueType="System.StructuredQueryType.String"/>

                </condition>

            </condition>

        </conditions>

    </query>
...

<Elemento properties>

O <elemento properties> descreve as propriedades da pesquisa salva em si. Os arquivos de pesquisa salvos> dão suporte a quatro propriedades: <autor>, <tipo>, <descrição> e <marcas. Elas são apenas para uso interno.

Especificação completa do formato de arquivo search-ms

Veja a seguir um exemplo do XML completo para um arquivo de pesquisa salvo.

<?xml version="1.0"?>

<persistedQuery version="1.0">

    <!-- The viewInfo section defines how results are displayed to the end user -->
    <viewInfo viewMode=""       <!-- details | icons | tiles -->
              iconSize=""       <!-- Integer -->
              stackIconSize=""  <!-- Do not use -->
              displayName=""    <!-- Do not use -->
              folderFlags=""    <!-- Do not use -->
              taskFlags=""      <!-- Do not use -->
              autoListFlags=""> <!-- Do not use -->

        <visibleColumns>
            <column viewField=""/>  <!-- System.[propertyname] -->
        </visibleColumns>

        <frequentlyUsedColumns>
            <column viewField= ""/> <!-- Do not use -->
        </frequentlyUsedColumns>

        <columnChooserColumns >
            <column viewField=""/>  <!-- Do not use -->
        </columnChooserColumns >

        <groupBy viewField=""       <!-- System.[propertyname] -->
                 direction=""/>     <!-- ascending | descending -->

        <stackList>
            <stack viewField=""/>   <!-- Do not use -->
        </stackList>

        <sortList>
            <sort viewField=""      <!-- System.[propertyname] -->
                  direction=""/>    <!-- ascending | descending -->
        </sortList>
    </viewInfo>

    <!-- The query section defines what gets searched (locations, file kinds) -->
    <query>
        <providers>
            <provider clsid=""/>          <!-- Do not use -->
        </providers>

        <subQueries>
            <subQuery path=""/>           <!-- Do not use -->
            <subQuery knownSearch=""/>    <!-- Do not use -->
        </subQueries>

        <scope>
            <include path=""        nonRecursive=""/>   <!-- [path of location to include] -->
            <include knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
            <exclude path=""        nonRecursive=""/>   <!-- [path of location to exclude] -->
            <exclude knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
        </scope>

        <kindList>
            <kind name=""/>     <!-- Kind value -->
        </kindList>

        <conditions>
            <condition type="" ...>     <!-- andCondition | orCondition | notCondition | leafCondition -->
                <attributes>
                    <attribute attributeID="" .../> <!-- Do not use -->
                </attributes>
            </condition>
        </conditions>
    </query>

    <!-- The properties section identifies properties of the saved search file itself. -->
    <properties>
        ...             <!-- Do not use -->
    </properties>

</persistedQuery>

Exemplos de pesquisas salvas

Veja a seguir exemplos de arquivos *.search-ms.

Documents.search-ms recentes

<?xml version="1.0"?>
<persistedQuery version="1.0">
    <viewInfo viewMode="details" iconSize="16">
        <sortList>
            <sort viewField="System.DateModified" direction="descending"/>
        </sortList>
    </viewInfo>

    <query>
        <conditions>
            <condition type="leafCondition" valuetype="System.StructuredQueryType.DateTime" property="System.DateModified" operator="imp" value="R00UUUUUUUUZZXD-30NU" propertyType="wstr" />
        </conditions>
        <kindList>
            <kind name="Document"/>
        </kindList>
        <subQueries>
            <subQuery knownSearch="{4f800859-0bd6-4e63-bbdc-38d3b616ca48}"/>
        </subQueries>
    </query>
</persistedQuery>

Música Recente.search-ms

<?xml version="1.0"?>
<persistedQuery version="1.0">
    <viewInfo viewMode="details" iconSize="16">
        <sortList>
            <sort viewField="System.DateModified" direction="descending"/>
        </sortList>
    </viewInfo>

    <query>
        <conditions>
            <condition type="leafCondition" valuetype="System.StructuredQueryType.DateTime" property="System.DateModified" operator="imp" value="R00UUUUUUUUW-1WNNU" propertyType="wstr"/>
        </conditions>
        <kindList>
            <kind name="Music"/>
        </kindList>
        <subQueries>
            <subQuery knownSearch="{4f800859-0bd6-4e63-bbdc-38d3b616ca48}"/>
        </subQueries>
    </query>
</persistedQuery>

Compartilhado recentemente por Mim.search-ms

<?xml version="1.0"?>
<persistedQuery version="1.0">
    <viewInfo viewMode="details" iconSize="16">
        <visibleColumns>
            <column viewField="System.ItemNameDisplay"/>
            <column viewField="System.DateModified"/>
            <column viewField="System.Keywords"/>
            <column viewField="System.SharedWith"/>
            <column viewField="System.ItemFolderPathDisplayNarrow"/>
        </visibleColumns>
        <frequentlyUsedColumns>
            <column viewField="System.Author"/>
            <column viewField="System.Kind"/>
            <column viewField="System.Size"/>
            <column viewField="System.Title"/>
            <column viewField="System.Rating"/>
        </frequentlyUsedColumns>
        <sortList>
            <sort viewField="System.SharedWith" direction="descending"/>
        </sortList>
    </viewInfo>

    <query>
        <conditions>
            <condition type="andCondition">
                <condition type="leafCondition" property="System.IsShared" operator="eq" value="true"/>
                <condition type="leafCondition" property="System.FileOwner" operator="eq" value="[Me]"/>
            </condition>
        </conditions>
        <kindList>
            <kind name="item"/>
        </kindList>
        <scope>
            <include knownFolder="{5E6C858F-0E22-4760-9AFE-EA3317B67173}"/>
            <include knownFolder="{DFDF76A2-C82A-4D63-906A-5644AC457385}"/>
        </scope>
    </query>
</persistedQuery>