Schéma de contenu d’application

le contenu de l’Application, ou appcontent-ms, schema for Windows apps permet aux développeurs d’améliorer la recherche dans l’application en fournissant des informations supplémentaires sur le contenu de votre application à l’Index de recherche Windows.

Fonctionnement

pour demander que Windows indexez les données de votre application pour les recherches dans l’application, créez un dossier nommé « indexé » sous le LocalFolder et stockez les fichiers que vous souhaitez indexer. Windows indexe le contenu et les métadonnées du fichier (propriétés) dans ce dossier « indexé » et dans tous ses sous-dossiers.

Pour utiliser le schéma appcontent-MS afin d’indexer des informations sur un fichier ou un élément, créez un fichier appcontent-ms et ajoutez-le au dossier LocalFolder\Indexed de votre application (vous devez le faire au moment de l’exécution, une fois votre application installée). lorsque votre application utilise Windows. Stockage. Rechercher des API pour exécuter des requêtes sur le dossier indexé, la recherche inclut des informations à partir de vos fichiers appcontent-ms.

les informations dans appcontent-ms files sont utilisées uniquement lorsque l’application qui les contient utilise la Windows. Stockage. Rechercher l’API pour effectuer des recherches ; les informations ne s’affichent pas dans Windows interface utilisateur ou dans d’autres applications, par exemple.

Cet exemple montre un simple fichier appcontent-MS qui décrit un élément nommé « Sample 1 ».

Notez que le fichier contient des éléments non définis par le schéma appcontent-ms : IndexerSampleInformation et IndexerSampleSpecificElement . Votre fichier appcontent-MS doit avoir un nœud racine qui encapsule toutes les données à indexer, mais vous pouvez nommer ce nœud comme vous le souhaitez.

<?xml version="1.0" encoding="utf-8"?>
<IndexerSampleInformation>
  <Properties xmlns="http://schemas.microsoft.com/Search/2013/ApplicationContent">
    <Name>Sample 1</Name>
    <Keywords>
      <Keyword xml:lang="en-US">Sample 1 - keyword 1</Keyword>
      <Keyword>Sample 1 - keyword 2</Keyword>
    </Keywords>
    <Comment>Sample 1 comment</Comment>
    <AdditionalProperties>
      <Property Key="System.Title">Sample 1 Title</Property>
      <Property xml:lang="en-US" Key="System.Contact.EmailAddresses">
        <Value>bryan@contoso.com</Value>
        <Value>vincent@contoso.com</Value>
      </Property>
    </AdditionalProperties>
  </Properties>
  <IndexerSampleSpecificElement sc:IndexableContent="true" 
    xmlns:sc="http://schemas.microsoft.com/Search/2013/ApplicationContent">
    The text included here will be indexed, enabling full-text search.
  </IndexerSampleSpecificElement>
</IndexerSampleInformation>

vous pouvez même indiquer à Windows recherche d’indexer le contenu des éléments arbitraires. Utilisez simplement l’attribut IndexableContent pour indiquer à Search d’indexer le contenu. dans l’exemple précédent, Windows Search indexera le contenu du IndexerSampleSpecificElement, car l’attribut IndexableContent est défini sur true:

  <IndexerSampleSpecificElement sc:IndexableContent="true" 
    xmlns:sc="http://schemas.microsoft.com/Search/2013/ApplicationContent">
    The text included here will be indexed, enabling full-text search.
  </IndexerSampleSpecificElement>

La recherche traitera le contenu comme du texte par défaut ; Si le contenu est en base64, utilisez l’attribut ContentType pour spécifier le type MIME.

L’exemple suivant montre comment copier un fichier appcontent-ms dans le dossier LocalFolder\Indexed de votre application. Le code copie tous les fichiers qu’il trouve dans le dossier appcontent-ms de l’application dans le dossier LocalFolder\Indexed. (Vous pouvez également créer des fichiers appcontent-MS directement dans le dossier indexé plutôt que de les copier à partir d’un autre emplacement.)

/// <summary>
/// For the purposes of this sample, the appcontent-ms files are stored in an "appcontent-ms" folder in the
/// install directory. These are then copied into the app&#39;s "LocalState\Indexed" folder, which exposes them
/// to the indexer.
/// </summary>
public async static Task<string> AddAppContentFilesToIndexedFolder()
{
    var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var installDirectory = Windows.ApplicationModel.Package.Current.InstalledLocation;
    var outputString = "Items added to the \"Indexed\" folder:";
    var appContentFolder = await installDirectory.GetFolderAsync("appcontent-ms");
    var indexedFolder = await localFolder.CreateFolderAsync(
        "Indexed", Windows.Storage.CreationCollisionOption.OpenIfExists);
    var files = await appContentFolder.GetFilesAsync();
    foreach (var file in files)
    {
        outputString += "\n" + file.DisplayName + file.FileType;
        await file.CopyAsync(indexedFolder, 
            file.Name, Windows.Storage.NameCollisionOption.ReplaceExisting);
    }
    return outputString;
}
// For the purposes of this sample, the appcontent-ms files are stored in an "appcontent-ms" folder
// in the install directory.  These are then copied into the app&#39;s "LocalState\Indexed" folder,
// which exposes them to the indexer.
function _addAppContentFilesToIndexedFolder() {
    var localFolder = appData.localFolder,
        appcontentFolder,
        indexedFolder,
        installDirectory = Windows.ApplicationModel.Package.current.installedLocation;
    var output = "Items added to the \"Indexed\" folder:\n";
    installDirectory.getFolderAsync("appcontent-ms").then(function (retrievedAppcontentFolder) {
        appcontentFolder = retrievedAppcontentFolder;
        return localFolder.createFolderAsync(
            "Indexed", Windows.Storage.CreationCollisionOption.openIfExists);
    }).then(function (retrievedIndexedFolder) {
        indexedFolder = retrievedIndexedFolder;
        return appcontentFolder.getFilesAsync(appcontentFolder);
    }).then(function (files) {
        var promiseArray = [];
        for (var i = 0, len = files.length; i < len; i++) {
            promiseArray[i] = files[i].copyAsync(indexedFolder, 
                files[i].name, Windows.Storage.NameCollisionOption.replaceExisting);
            output += files[i].displayName + files[i].fileType;
            if (i < len - 1) {
                output += "\n";
            }
        }
        return WinJS.Promise.join(promiseArray);
    }).done(function () {
        WinJS.log &amp;&amp; WinJS.log(output, "sample", "status");
    });
}

Pour obtenir le code complet, consultez l' exemple d’indexeur.

Référence des éléments

Le tableau suivant répertorie tous les éléments de ce schéma, triés par ordre alphabétique par nom.

Élément Description
AdditionalProperties

Contient des propriétés supplémentaires qui décrivent l’élément.

Commentaire

Contient un System. Comment qui décrit l’élément.

Mot clé

Un des System. Keywords qui décrit l’élément.

Mots clés

Contient les System. Keywords qui décrivent l’élément.

Nom

Spécifie System. ItemName \System. ItemNameDisplay de l’élément.

Propriétés

contient des propriétés qui décrivent l’élément à la Windows Index de recherche.

Propriété

Propriété qui décrit l’élément.

Valeur

Valeur qui sera indexée pour la propriété.

 

Attributs d’éléments spécifiques d’applications

Utilisez ces attributs pour indexer le contenu dans vos propres éléments XML spécifiques à l’application.

Attribut Description

Indiquez

La définition de cette propriété sur un élément indique que le contenu de l’élément est traité comme un encodage Base64 du type MIME/type de contenu spécifié et est indexé à l’aide du gestionnaire de ce type de contenu.

IndexableContent

Indique que le texte de l’élément doit être indexé pour la recherche, mais n’est pas associé à une propriété. Notez que les propriétés peuvent être récupérées ultérieurement en fonction de la clé de propriété, mais pas le contenu de texte.

 

Exemple d’indexeur

Windows. Stockage. Recherche

Ajout d’une recherche (HTML)

Ajout d’une recherche (XAML)