Schema für Anwendungsinhalt
Das Anwendungsinhaltsschema (appcontent-ms) für Windows-Apps ermöglicht Entwicklern, die In-App-Suche zu verbessern, indem sie zusätzliche Informationen zum Inhalt Ihrer App für den Windows Search Index bereitstellen.
Funktionsweise
Um anzufordern, dass Windows Ihre App-Daten für In-App-Suchvorgänge indizieren möchten, erstellen Sie unter LocalFolder einen Ordner namens "Indexed", und speichern Sie die Dateien, die dort indiziert werden sollen. Windows indiziert den Dateiinhalt und die Metadaten (Eigenschaften) in diesem Ordner "Indexed" und allen zugehörigen Unterordnern.
Um das Schema appcontent-ms zum Indizieren von Informationen zu einer Datei oder einem Element zu verwenden, erstellen Sie eine appcontent-ms-Datei, und fügen Sie sie dem Ordner LocalFolder\Indexed Ihrer App hinzu (Sie müssen dies zur Laufzeit nach der Installation Ihrer App tun). Wenn Ihre App Windows.Storage verwendet. Suchen Sie APIs, um Abfragen für den indizierten Ordner auszuführen. Die Suche enthält Informationen aus Ihren appcontent-ms-Dateien.
Die Informationen in appcontent-ms-Dateien werden nur verwendet, wenn die App, die sie enthält, die Windows.Storage verwendet. Such-API zum Ausführen von Suchvorgängen; Die Informationen werden beispielsweise nicht in Windows Benutzeroberfläche oder in anderen Apps angezeigt.
Dieses Beispiel zeigt eine einfache appcontent-ms-Datei, die ein Element namens "Sample 1" beschreibt.
Beachten Sie, dass die Datei Elemente enthält, die nicht durch das schema appcontent-ms definiert sind: IndexerSampleInformation
und IndexerSampleSpecificElement
. Die Datei appcontent-ms muss über einen Stammknoten verfügen, der alle zu indizierenden Daten kapselt. Sie können diesem Knoten jedoch einen namen geben.
<?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>
Sie können sogar Windows Search an weisen, den Inhalt beliebiger Elemente zu indizierung. Verwenden Sie einfach das IndexableContent-Attribut , um search anzuordnen, den Inhalt zu indizieren. Im vorherigen Beispiel indiziert Windows Search den Inhalt des IndexerSampleSpecificElement, da das IndexableContent-Attribut auf TRUE festgelegt ist:
<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>
Bei der Suche wird der Inhalt standardmäßig als Textinhalt behandelt. Wenn der Inhalt base64 ist, verwenden Sie das ContentType-Attribut , um den MIME-Typ anzugeben.
Das nächste Beispiel zeigt, wie Sie eine appcontent-ms-Datei in den Ordner LocalFolder\Indexed Ihrer App kopieren. Der Code kopiert alle gefundenen Dateien im Ordner appcontent-ms der App in den Ordner LocalFolder\Indexed. (Sie können auch neue appcontent-ms-Dateien direkt im Indizierten Ordner erstellen, anstatt sie von einem anderen Speicherort zu kopieren.)
/// <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'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'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 && WinJS.log(output, "sample", "status");
});
}
Den vollständigen Code finden Sie im Indexer-Beispiel.
Elementreferenz
In der folgenden Tabelle sind alle Elemente in diesem Schema alphabetisch nach Namen sortiert.
Element | BESCHREIBUNG |
---|---|
AdditionalProperties | Enthält zusätzliche Eigenschaften, die das Element beschreiben. |
Comment | Enthält eine System.Comment-Datei , die das Element beschreibt. |
Schlüsselwort | Eins der System.Keywords , das das Element beschreibt. |
Schlüsselwörter | Enthält die System.Keywords , die das Element beschreiben. |
Name | Gibt das System.ItemNameSystem.ItemNameDisplay \ des Elements an. |
Eigenschaften | Enthält Eigenschaften, die das Element für den Windows Suchindex beschreiben. |
Eigenschaft | Eine Eigenschaft, die das Element beschreibt. |
Wert | Der Wert, der für die Eigenschaft indiziert wird. |
Attribute für app-spezifische Elemente
Verwenden Sie diese Attribute, um Inhalte in Ihren eigenen app-spezifischen XML-Elementen zu indizieren.
Attribut | BESCHREIBUNG |
---|---|
Das Festlegen dieser Eigenschaft für ein Element gibt an, dass der Inhalt des Elements als Base64-Codierung des angegebenen MIME-Typs/Inhaltstyps behandelt und mit dem Handler für diesen Inhaltstyp indiziert wird. |
|
Gibt an, dass der Text des Elements für die Suche indiziert werden soll, aber keiner Eigenschaft zugeordnet ist. Beachten Sie, dass Eigenschaften später basierend auf dem Eigenschaftenschlüssel abgerufen werden können, Textinhalt jedoch nicht. |
Zugehörige Themen