アプリケーション コンテンツのスキーマ
Windows アプリのアプリケーション コンテンツ (appcontent-ms) スキーマを使用すると、開発者は、アプリのコンテンツに関する追加の情報を Windows Search インデックスに提供することで、アプリ内検索を強化できます。
しくみ
アプリ内検索Windowsアプリ データのインデックスを作成することを要求するには、LocalFolder の下に "Indexed" という名前のフォルダーを作成し、そこにインデックスを作成するファイルを格納します。 Windows "Indexed" フォルダーとそのすべてのサブフォルダー内のファイルの内容とメタデータ (プロパティ) にインデックスを作成します。
appcontent-ms スキーマを使用してファイルまたは項目に関する情報のインデックスを作成するには、appcontent-ms ファイルを作成し、アプリの LocalFolder\Indexed フォルダーに追加します (アプリがインストールされた後、実行時にこれを行う必要があります)。 アプリで Windows.Storage が使用されている場合。インデックス付きフォルダーに対してクエリを実行する検索 API。Search には appcontent-ms ファイルからの情報が含まれます。
appcontent-ms ファイル内の情報は、それらを含むアプリが Windows.Storage を使用している場合にのみ使用されます。検索を実行する Search API。たとえば、UI や他のアプリWindows情報は表示されません。
この例では、"Sample 1" という名前の項目を記述する単純な appcontent-ms ファイルを示します。
ファイルには、appcontent-ms スキーマで定義されていない要素と が含 IndexerSampleInformation
IndexerSampleSpecificElement
まれています。 appcontent-ms ファイルには、インデックスを作成するデータをカプセル化するルート ノードが必要ですが、そのノードには必要な名前を付けできます。
<?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>
任意の要素のWindowsインデックスを作成するには、Search を使用することもできます。 IndexableContent 属性を使用して、コンテンツのインデックスを作成する検索を指定します。 前の例では、indexableContent 属性が true に設定Windows Search によって IndexerSampleSpecificElement の内容のインデックスが作成されます。
<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>
既定では、検索によってコンテンツがテキスト コンテンツとして扱われる。コンテンツが base64 の場合は、 ContentType 属性を使用 して MIME の種類を指定します。
次の例では、appcontent-ms ファイルをアプリの LocalFolder\Indexed フォルダーにコピーする方法を示します。 このコードは、アプリの appcontent-ms フォルダーで見つけたすべてのファイルを LocalFolder\Indexed フォルダーにコピーします。 (別の場所からコピーするのではなく、インデックス付きフォルダーに新しい appcontent-ms ファイルを直接作成することもできます)。
/// <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");
});
}
完全なコードについては、インデクサーのサンプル を参照してください。
要素リファレンス
次の表は、このスキーマのすべての要素を名前順にアルファベット順に並べ替えた一覧です。
要素 | 説明 |
---|---|
AdditionalProperties | 項目を記述する追加のプロパティが含まれている。 |
解説 | 項目を 記述する System.Comment を格納します。 |
Keyword | 項目を記述 する System.Keywords の 1 つ。 |
キーワード | 項目を記述 する System.Keywords を格納します。 |
名前 | 項目の System.ItemNameSystem.ItemNameDisplay \ を指定します。 |
Properties | 検索インデックスの項目を表すプロパティWindows含む。 |
プロパティ | 項目を記述する プロパティ。 |
Value | プロパティのインデックスを作成する値。 |
アプリ固有の要素の属性
これらの属性を使用して、独自のアプリ固有の XML 要素のコンテンツのインデックスを作成します。
属性 | 説明 |
---|---|
要素にこのプロパティを設定すると、要素のコンテンツは指定された MIME の種類/コンテンツ タイプの base64 エンコードとして扱われるので、そのコンテンツタイプのハンドラーを使用してインデックスが作成されます。 |
|
要素のテキストに検索用のインデックスを作成する必要があるが、 プロパティには関連付け "ない" 必要がある場合を示します。 プロパティは後でプロパティ キーに基づいて取得できますが、テキスト コンテンツは取得できないことに注意してください。 |
関連トピック