Compartir a través de


Formato de archivo de búsqueda guardado

En Windows Vista y versiones posteriores, los usuarios pueden guardar búsquedas como una carpeta de búsqueda generada por un archivo XML que almacena la consulta en un formulario que el subsistema de búsqueda de Windows puede usar. En este tema se describe el formato de archivo (*.search-ms) e incluye las secciones siguientes:

Información general de las búsquedas guardadas

Los usuarios pueden guardar una consulta de búsqueda como carpeta de búsqueda, una carpeta virtual que se muestra en el Explorador de Windows en la carpeta Búsquedas. Al abrir una carpeta de búsqueda, se ejecuta la búsqueda guardada y se muestran los resultados actualizados. El archivo de búsqueda guardado almacena la consulta en un formato en el que Windows Search puede actuar, especificar qué buscar, dónde buscar y cómo presentar los resultados.

La búsqueda guardada se genera a partir de un archivo XML (*.search-ms) en la carpeta %userprofile%\Search. Los datos se dividen en tres elementos principales del archivo XML:

  • <viewInfo> especifica información de presentación
  • <query> especifica (información de consulta de búsqueda)
  • <properties> especifica las propiedades del propio archivo *.search-ms.

En el ejemplo siguiente se muestra la estructura de alto nivel de un archivo de búsqueda guardado.

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

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

    <query>
        ...
    </query>

    <properties>
        ...
    </properties>

</persistedQuery>

<Elemento viewInfo>

El <elemento viewInfo> especifica cómo se presentan los resultados al usuario final. En el ejemplo siguiente se muestra la estructura del 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>
...

<viewInfo> Attributes

En la tabla siguiente se describen los atributos del <elemento viewInfo> .

Atributo Descripción Valores
Viewmode Especifica la vista de carpetas. Detalles | Iconos | Azulejos
iconSize Controla el tamaño predeterminado de los iconos y miniaturas de los elementos cuando no se apilan. Entero entre 16 y 256
stackIconSize Solo para uso interno. No debe usarse. N/D
DisplayName Solo para uso interno. No debe usarse. N/D
autoListFlags Solo para uso interno. No debe usarse. N/D
folderFlags Solo para uso interno. No debe usarse. N/D
taskFlags Solo para uso interno. No debe usarse. N/D

<viewInfo> Elementos secundarios

Los elementos secundarios del <elemento viewInfo> especifican qué columnas aparecen en los resultados de búsqueda del Explorador de Windows y cómo se agrupan y ordenan los resultados. Cada elemento secundario contiene un conjunto ordenado de columnas, identificado por nombres canónicos de propiedades del sistema (por ejemplo, System.DisplayName). Si no se define en el archivo de búsqueda guardado, los resultados de la búsqueda se presentan con un conjunto predeterminado de columnas adecuado para los tipos de archivo mostrados.

Elemento Descripción Valores
visibleColumns Especifica una lista ordenada de columnas que se mostrarán en la vista de resultados. El usuario puede cambiar esta lista. Cualquier propiedad del sistema.
frequentlyUsedColumns Solo para uso interno. No debe usarse. N/D
columnChooserColumns Solo para uso interno. No debe usarse. N/D
Groupby Especifica una única propiedad del sistema por la que se van a agrupar los resultados. El usuario puede cambiar este valor. Cualquier propiedad del sistema.
sortList Especifica una lista ordenada de columnas por la que ordenar los resultados. Hasta cuatro propiedades del sistema. El usuario puede cambiar esta lista.
stackList Solo para uso interno. No debe usarse. N/D

<Elemento query>

El <elemento query> especifica los atributos que definen cómo se consultan los resultados. En el ejemplo siguiente se muestra la estructura del 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 secundarios

En la tabla siguiente se describen los elementos secundarios del <elemento scope> .

Elemento Descripción Valor
providers Solo para uso interno. No debe usarse. N/D
Subconsultas Solo para uso interno. No debe usarse. N/D
Ámbito Identifica las ubicaciones que se van a incluir o excluir en la búsqueda. Una ruta de acceso o un identificador de carpeta conocido de la ubicación que se va a incluir o excluir. Este elemento también puede especificar si la búsqueda debe incluir o excluir rutas de acceso secundarias (una búsqueda superficial o profunda).
kindList Identifica el tipo de archivo que se va a buscar. Cualquier valor System.Kind.
condiciones Especifica reglas para filtrar los resultados. Por ejemplo, los resultados pueden limitarse a los correos electrónicos enviados por o a una persona determinada. andCondition, orCondition, notCondition, leafCondition.

<Elemento scope>

El <elemento scope> identifica las ubicaciones que se van a incluir o excluir de la búsqueda. El <elemento scope> debe contener al menos un <elemento secundario include> presente y cero o más <elementos exclude> . Las ubicaciones se pueden especificar como una ruta de acceso (se admiten variables de entorno) o como identificador de carpeta conocido. Además, cada una de estas ubicaciones se puede especificar para que se busque en profundidad o superficial estableciendo nonRecursive en "true" o "false" (el valor predeterminado es recursivo). Las partes de la lista incluida de ubicaciones se pueden excluir especificando elementos exclude.

A continuación se muestra un <elemento de ámbito> que buscará en la carpeta especial de documentos, pero no sus elementos secundarios, el volumen "E:" y sus elementos secundarios, pero no el directorio "E:\windows" ni ninguno de sus elementos secundarios:

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

<Elemento kindList>

Estos elementos definen la unión del "tipo" de elementos que deben aparecer en la biblioteca. Los valores válidos son:

  • calendario
  • communication
  • contact
  • documento
  • email
  • feed
  • folder
  • Juego
  • instantmessage
  • Diario
  • link
  • Película
  • music
  • nota
  • picture
  • programa
  • recordedtv
  • searchfolder
  • task
  • video
  • webhistory
  • item
  • otro

<Elemento conditions>

Las condiciones son filtros con los que se comparan los resultados de búsqueda. Por ejemplo, puede filtrar los resultados que cumplen determinados criterios, como el nombre del autor o el tamaño del archivo. El conjunto de condiciones se integra en un único árbol de condición con ramas AND, OR y NOT lógicas.

En el ejemplo siguiente se muestra la estructura del <elemento condition> .

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

El tipo de condición puede ser uno de los siguientes:

Tipo Descripción Atributos disponibles
andCondition Combinación de dos o más condiciones secundarias N/D
orCondition Disjunción de dos de más condiciones secundarias N/D
notCondition Negación de una condición secundaria N/D
leafCondition Compara una propiedad con el valor property, propertyType, operator, value, valuetype

Los <atributos del elemento leafCondition> identifican las propiedades y los valores con los que se filtran los resultados.

Ejemplo: <elemento conditions>

En el ejemplo siguiente se filtran los resultados de todos los elementos no leídos creados por John. Es decir, la propiedad System.IsRead es false y la cadena "john" aparece en las propiedades System.Author o 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>

El <elemento properties> describe las propiedades de la propia búsqueda guardada. Los archivos de búsqueda guardados admiten cuatro propiedades: <autor>, <tipo>, <descripción> y <etiquetas>. Son solo para uso interno.

Especificación completa del formato de archivo search-ms

A continuación se muestra un ejemplo del XML completo de un archivo de búsqueda guardado.

<?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>

Ejemplos de búsquedas guardadas

A continuación se muestran ejemplos de archivos *.search-ms.

Documentos recientes.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="R00UUUUUUUUZZXD-30NU" propertyType="wstr" />
        </conditions>
        <kindList>
            <kind name="Document"/>
        </kindList>
        <subQueries>
            <subQuery knownSearch="{4f800859-0bd6-4e63-bbdc-38d3b616ca48}"/>
        </subQueries>
    </query>
</persistedQuery>

Música reciente.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>

Compartido recientemente por Me.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>