Share via


Esquema de contenido de la aplicación

El esquema Contenido de la aplicación, o appcontent-ms, para las aplicaciones de Windows permite a los desarrolladores mejorar la búsqueda en la aplicación proporcionando información adicional sobre el contenido de la aplicación al índice de Windows Search.

Funcionamiento

Para solicitar que Windows los datos de la aplicación para las búsquedas en la aplicación, cree una carpeta denominada "Indexed" en LocalFolder y almacene los archivos que quiera indexar allí. Windows indexa el contenido del archivo y los metadatos (propiedades) de esta carpeta "indexada" y todas sus subcarpetas.

Para usar el esquema appcontent-ms para indexar información sobre un archivo o elemento, cree un archivo appcontent-ms y agrégrelo a la carpeta LocalFolder\Indexed de la aplicación (debe hacerlo en tiempo de ejecución, una vez instalada la aplicación). Cuando la aplicación usa Windows.Storage. Buscar API para realizar consultas en la carpeta Indexed; Search incluirá información de los archivos appcontent-ms.

La información de los archivos appcontent-ms solo se usa cuando la aplicación que los contiene usa el Windows.Storage. Search API para realizar búsquedas; La información no se mostrará en la interfaz Windows usuario o en otras aplicaciones, por ejemplo.

En este ejemplo se muestra un archivo appcontent-ms simple que describe un elemento denominado "Sample 1".

Observe que el archivo contiene elementos no definidos por el esquema appcontent-ms: IndexerSampleInformation y IndexerSampleSpecificElement. El archivo appcontent-ms debe tener un nodo raíz que encapsula todos los datos que se indexen, pero puede dar nombre a ese nodo todo lo que desee.

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

Incluso puede Windows Search para indexar el contenido de elementos arbitrarios. Solo tiene que usar el atributo IndexableContent para decir a Search que indexe el contenido. En el ejemplo anterior, Windows Search indexará el contenido de IndexerSampleSpecificElement porque el atributo IndexableContent está establecido en 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 búsqueda tratará el contenido como contenido de texto de forma predeterminada; si el contenido es base64, use el atributo ContentType para especificar el tipo MIME.

En el ejemplo siguiente se muestra cómo copiar un archivo appcontent-ms en la carpeta LocalFolder\Indexed de la aplicación. El código copia los archivos que encuentre en la carpeta appcontent-ms de la aplicación en la carpeta LocalFolder\Indexed. (También puede crear nuevos archivos appcontent-ms directamente en la carpeta Indexed en lugar de copiarlos desde otra ubicación).

/// <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");
    });
}

Para obtener el código completo, vea el ejemplo de indexador.

Referencia de elementos

En la tabla siguiente se enumeran todos los elementos de este esquema, ordenados alfabéticamente por nombre.

Elemento Descripción
AdditionalProperties

Contiene propiedades adicionales que describen el elemento.

Comment

Contiene un objeto System.Comment que describe el elemento.

Palabra clave

Una de las system.keywords que describe el elemento.

Palabras clave

Contiene system.keywords que describen el elemento.

Nombre

Especifica el objeto System.ItemNameSystem.ItemNameDisplay \ del elemento.

Propiedades

Contiene propiedades que describen el elemento en el índice Windows Search.

Propiedad

Propiedad que describe el elemento.

Valor

Valor que se indexará para la propiedad .

 

Atributos para elementos específicos de la aplicación

Use estos atributos para indexar el contenido en sus propios elementos XML específicos de la aplicación.

Atributo Descripción

Contenttype

Establecer esta propiedad en un elemento indica que el contenido del elemento se trata como una codificación base64 del tipo MIME o tipo de contenido especificado y se indexa mediante el controlador para ese tipo de contenido.

IndexableContent

Indica que el texto del elemento se debe indexar para la búsqueda, pero no está asociado a una propiedad . Tenga en cuenta que las propiedades se pueden recuperar más adelante en función de la clave de propiedad, pero el contenido de texto no.

 

Ejemplo de indexador

Windows. Storage. Búsqueda

Agregar búsqueda (HTML)

Agregar búsqueda (XAML)