indexプロパティ ストア

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

indexプロパティ ストアは、検索インデックスの一部のメタデータを保持します。たとえば、最後に更新されたタイムスタンプはインデックス プロパティ ストアにあります。

indexプロパティ ストアは、Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.configファイルのsitecore/contentSearch部分で構成します。Sitecoreで提供される設定は次のようになります。

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

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

indexプロパティstoreを各インデックスに割り当てるには、次の構成を使用します。

<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)"/>
この記事を改善するための提案がある場合は、 お知らせください!