Formato file di ricerca salvato

In Windows Vista e versioni successive, gli utenti possono salvare le ricerche come cartella di ricerca generata da un file XML che archivia la query in un modulo che può essere utilizzato dal sottosistema di ricerca di Windows. Questo argomento descrive il formato di file (*.search-ms) e include le sezioni seguenti:

Panoramica delle ricerche salvate

Gli utenti possono salvare una query di ricerca come cartella di ricerca, una cartella virtuale visualizzata in Esplora risorse nella cartella Ricerche. L'apertura di una cartella di ricerca esegue la ricerca salvata e visualizza i risultati aggiornati. Il file di ricerca salvato archivia la query in un formato su cui Windows Search può agire, specificando cosa cercare, dove eseguire la ricerca e come presentare i risultati.

La ricerca salvata viene generata da un file XML (*.search-ms) nella cartella %userprofile%\Searches. I dati sono suddivisi in tre elementi primari nel file XML:

  • <viewInfo> specifica le informazioni sulla presentazione
  • <query> specifica (informazioni sulle query di ricerca)
  • <le proprietà> specificano le proprietà del file *.search-ms stesso

Nell'esempio seguente viene illustrata la struttura generale di un file di ricerca salvato.

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

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

    <query>
        ...
    </query>

    <properties>
        ...
    </properties>

</persistedQuery>

<Elemento viewInfo>

L'elemento <viewInfo> specifica la modalità di presentazione dei risultati all'utente finale. Nell'esempio seguente viene illustrata la struttura dell'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>
...

<Attributi viewInfo>

Nella tabella seguente vengono descritti gli attributi dell'elemento <viewInfo> .

Attributo Descrizione Valori
Viewmode Specifica la visualizzazione cartelle. Dettagli | Icone | Piastrelle
iconSize Controlla le dimensioni predefinite delle icone e delle anteprime per gli elementi quando non sono in pila. Intero compreso tra 16 e 256
stackIconSize Solo per uso interno. Non usare. n/d
displayName Solo per uso interno. Non usare. n/d
autoListFlags Solo per uso interno. Non usare. n/d
folderFlags Solo per uso interno. Non usare. n/d
taskFlags Solo per uso interno. Non usare. n/d

<Elementi figlio viewInfo>

Gli elementi figlio dell'elemento <viewInfo> specificano le colonne visualizzate nei risultati della ricerca di Esplora risorse e la modalità di raggruppamento e ordinamento dei risultati. Ogni elemento figlio contiene un set ordinato di colonne, identificato dai nomi canonici delle proprietà di sistema, ad esempio System.DisplayName. Se non è definito nel file di ricerca salvato, i risultati della ricerca vengono visualizzati con un set predefinito di colonne appropriate per i tipi di file visualizzati.

Elemento Descrizione Valori
visibleColumns Specifica un elenco ordinato di colonne da visualizzare nella visualizzazione risultati. L'utente può modificare questo elenco. Qualsiasi proprietà di sistema.
frequentlyUsedColumns Solo per uso interno. Non usare. n/d
columnChooserColumns Solo per uso interno. Non usare. n/d
Groupby Specifica una singola proprietà di sistema in base alla quale raggruppare i risultati. L'utente può modificare questo valore. Qualsiasi proprietà di sistema.
sortList Specifica un elenco ordinato di colonne per ordinare i risultati. Fino a quattro proprietà di sistema. L'utente può modificare questo elenco.
stackList Solo per uso interno. Non usare. n/d

<Elemento query>

L'elemento <query> specifica gli attributi che definiscono la modalità di query dei risultati. Nell'esempio seguente viene illustrata la struttura dell'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>
...

<Eseguire query> sugli elementi figlio

Nella tabella seguente vengono descritti gli elementi figlio dell'elemento <scope> .

Elemento Descrizione Valore
provider Solo per uso interno. Non usare. n/d
Sottoquery Solo per uso interno. Non usare. n/d
Scope Identifica le posizioni da includere o escludere nella ricerca. Percorso o ID cartella noto del percorso da includere o escludere. Questo elemento può anche specificare se la ricerca deve includere/escludere percorsi figlio (una ricerca superficiale o profonda).
kindList Identifica il tipo di file da cercare. Qualsiasi valore System.Kind.
condizioni Specifica le regole per filtrare i risultati. Ad esempio, i risultati potrebbero essere limitati ai messaggi di posta elettronica inviati da o a una determinata persona. andCondition, orCondition, notCondition, fogliaCondition.

<elemento scope>

L'elemento <scope> identifica le posizioni da includere o escludere dalla ricerca. L'elemento scope deve contenere almeno un <> elemento figlio presente e zero o più <elementi di esclusione>.>< I percorsi possono essere specificati come percorso (le variabili di ambiente sono supportate) o come identificatore di cartella noto. Inoltre, ognuna di queste posizioni può essere specificata per essere eseguita una ricerca profonda o superficiale impostando il valore non ricorsivo su "true" o "false" (il valore predefinito è ricorsivo). Le parti dell'elenco di posizioni incluse possono essere escluse specificando elementi di esclusione.

Di seguito viene illustrato un elemento ambito> che eseguirà una <ricerca nella cartella speciale dei documenti, ma non nei relativi elementi figlio, nel volume "E:" e nei relativi elementi figlio, ma non nella directory "E:\windows" o in uno dei relativi elementi figlio:

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

<Elemento kindList>

Questi elementi definiscono l'unione del tipo di elementi che devono essere visualizzati nella libreria. I valori validi sono:

  • calendario
  • communication
  • contact
  • documento
  • email
  • feed
  • folder
  • Gioco
  • instantmessage
  • Gazzetta
  • link
  • Film
  • music
  • nota
  • picture
  • programma
  • recordedtv
  • searchfolder
  • attività
  • Video
  • webhistory
  • item
  • altro

<elemento condition>

Le condizioni sono filtri rispetto ai quali vengono confrontati i risultati della ricerca. Ad esempio, è possibile filtrare i risultati che soddisfano determinati criteri, ad esempio il nome dell'autore o le dimensioni del file. Il set di condizioni viene integrato in un singolo albero delle condizioni con rami AND, OR e NOT logici.

Nell'esempio seguente viene illustrata la struttura dell'elemento <condition> .

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

Il tipo di condizione può essere uno dei seguenti:

Tipo Descrizione Attributi disponibili
andCondition Combinazione di due o più condizioni figlio n/d
orCondition Disgiunzione di due condizioni figlio n/d
notCondition Negazione di una condizione figlio n/d
fogliaCondition Confronta una proprietà con il valore property, propertyType, operator, value, valuetype

Gli <attributi dell'elemento fogliaCondition> identificano le proprietà e i valori in cui vengono filtrati i risultati.

Esempio: <elemento condizioni>

Nell'esempio seguente vengono filtrati i risultati per tutti gli elementi non letti creati da John. Ovvero, la proprietà System.IsRead è false e la stringa "john" viene visualizzata nelle proprietà 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 proprietà>

> L'elemento <proprietà descrive le proprietà della ricerca salvata stessa. I file di ricerca salvati supportano quattro proprietà: <autore>, tipo>, <<descrizione> e <tag>. Questi sono solo per l'uso interno.

Specifica completa del formato file search-ms

Di seguito è riportato un esempio del codice XML completo per un file di ricerca salvato.

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

Esempi di ricerche salvate

Di seguito sono riportati esempi di file *.search-ms.

Documenti recenti.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>

Musica.search-ms recente

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

Di recente condiviso da 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>