---
title: "インデックスプロパティストア"
slug: "the-index-property-store"
abstract: "インデックスプロパティストアは検索インデックスのメタデータを永続化します。"
---
# インデックスプロパティストア

インデックスプロパティストアは検索インデックスのメタデータを永続化します。例えば、最後に更新されたタイムスタンプはインデックスプロパティストアにあります。

インデックスプロパティストアはSitecore.ContentSearch.Lucene.DefaultIndexConfiguration.configファイルのsitecore/contentSearch部分で設定します。Sitecoreに付属する構成は以下の通りです:

<databasePropertyStore
 type="Sitecore.ContentSearch.Maintenance.IndexDatabasePropertyStore,
 Sitecore.ContentSearch">
 <Key>$(1)</Key>
 <Database>core</Database>
</databasePropertyStore>

このインデックスプロパティストア構成は、Sitecoreデータベースのプロパティテーブルを永続ストアとして使い、coreデータベースを使用します。

各インデックスにインデックスプロパティストアを割り当てる構成は以下の通りです:

<index id="content" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex,
 Sitecore.ContentSearch.LuceneProvider">
 <param desc="name">$(id)</param>
 <param desc="folder">$(id)</param>
 <param desc="propertyStore"
 ref="contentSearch/databasePropertyStore" param1="$(id)" />

最初のparam1属性を $(id) に設定するか、それに似たような設定をしなければなりません。すべてのインデックスで一意でなければなりません。

インデックスプロパティストアはキー/値ベースのストレージです。キーはマスターキーと保存すべきレコードキーで構成されています。

マスターキーは構成によって異なります。上記の例では、databasePropertyStore定義ノード(<Key>$(1)</Key>)のKeyパラメータが参照される最初のパラメータdatabasePropertyStore取得します。

<param desc="propertyStore" ref="contentSearch/databasePropertyStore" param1="$(id)" />

このレコードは <index /> 要素で定義されているため、$(id) の値はcontentとなります:

<index id="content">

これがdatabasePropertyStoreキーがすべてのインデックスで一意であることを保証する方法です。また、マスターキーにInstanceNameを付け加えることで、すべての環境でキーが一意であることを保証します。

上記の構成を使えば、次のコードでカスタムプロパティをインデックスプロパティストアに保存できます:

index.PropertyStore.Set("docs-count", "123");

値123は、次のようなキーで保存されます: content\_CM01\_docs-count、ここでcontentはインデックスID、CM01はSitecoreインスタンス名です。

## カスタムインデックスプロパティストア

Sitecoreが提供する実装が使えない場合は、IIndexPropertyStoreインターフェースを実装してカスタムインデックスプロパティストアの実装を作成できます。

このインターフェースを実装したら、構成内で定義し、インデックスに割り当てる必要があります。例えば、構成の <contentSearch /> 部分で定義しなければなりません。

<contentSearch>
 <fileSystemPropertyStore type="Custom.IndexFileSystemPropertyStore, Custom">
 <Key>$(1)</Key>
 <FilePath>$(dataFolder)/indexpropertystore</FilePath>
 </fileSystemPropertyStore>
...
<index id="content" type="Sitecore.ContentSearch.LuceneProvider.
 LuceneIndex, Sitecore.ContentSearch.LuceneProvider">
 <param desc="name">$(id)</param>
 <param desc="folder">$(id)</param>
 <param desc="propertyStore"
 ref="contentSearch/fileSystemPropertyStore"
 param1="$(id)"/>