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

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

インデックスプロパティストアの設定は、App\_Config\\Sitecore\\ContentSearch\\Sitecore.ContentSearch.DefaultConfigurations.configファイルのsitecore/contentSearch部分をパッチで当てることで行います。Sitecoreに付属する構成は以下の通りです:

<databasePropertyStore type="Sitecore.ContentSearch.Maintenance.IndexDatabasePropertyStore, Sitecore.ContentSearch">
 <Key>$(1)</Key>
 <Database role:require="!ContentDelivery">core</Database>
 <Database role:require="ContentDelivery">web</Database>
</databasePropertyStore>

<filesystemPropertyStore type="Sitecore.ContentSearch.Maintenance.IndexFileSystemPropertyStore, Sitecore.ContentSearch">
 <Key>$(1)</Key>
</filesystemPropertyStore>

デフォルトでは、すべてのインデックスはdatabasePropertyStoreストアを使用するように設定されています。このインデックスプロパティストアはSitecoreデータベースのPropertiesテーブルに基づいています。インスタンスの役割に応じて、coreデータベースまたはwebデータベースSitecore使用できます。

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

<index id="content" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
 <param desc="name">$(id)</param>
 <param desc="core">$(id)</param>
 <param desc="propertyStore" ref="contentSearch/indexConfigurations/databasePropertyStore" param1="$(id)" />

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

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

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

<param desc="propertyStore" ref="contentSearch/indexConfigurations/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インターフェースを実装してカスタムインデックスプロパティストアの実装を作成できます。

1.  IIndexPropertyStoreインターフェースを実装するクラスを作成します。
    
2.  Sitecore構成のsitecore/contentSearch/indexConfigurationsセクションで指定してください。例えば:
    
    <indexConfigurations>
     ...
     <customPropertyStore type="Namespace.CustomPropertyStore, AssemblyName">
     <Key>$(1)</Key>
     ...
     </customPropertyStore>
     ...
    </indexConfigurations>
    
3.  新しいプロパティストアをインデックスに割り当てます:
    
    <index id="content" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
     <param desc="name">$(id)</param>
     <param desc="core">$(id)</param>
     <param desc="propertyStore" ref="contentSearch/indexConfigurations/customPropertyStore" param1="$(id)" />