---
title: "インクリメンタルインデックス更新"
slug: "incremental-index-updates"
abstract: "Commerce EngineがSitecoreのマスターインデックスやウェブインデックスを定期的に更新し、新規、変更、削除されたカタログエンティティ(カタログ、カテゴリ、販売可能なアイテムを含む)を制御する方法を説明します。"
---
# インクリメンタルインデックス更新

Sitecore XC、Commerce Engineで変更されたカタログエンティティを定期的に追加または削除することで検索インデックスを更新します。

Commerce Engineは、Sitecoreのマスターおよびウェブインデックスに新しい、変更、削除されたカタログ、カテゴリ、販売可能なアイテムを更新します。増分更新により、Sitecoreで使用される検索プロバイダー(例えばSolr)は、最新のCommerceカタログデータを反映した検索結果を返すことができます。

PlugIn.CatalogIndexing.PolicySet-1.0.0.jsonファイル(c:\\inetpub\\wwwroot\\<environment>\\wwwroot\\data\\Environmentsフォルダ内)は、Commerce Engineが変更を監視するカタログエンティティの種類と、Commerce Engineに追加、変更、削除されたエンティティに関する情報を保存するために維持するリストを定義します。IncrementalListNameは変更されたエンティティを追跡しているリストを定義します。DeleteListNameは削除されたエンティティを追跡しているリストを定義します。[カタログインデックスのミニオン](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/catalog-minions.html "Catalog minions")はこれらのリストを監視します。

以下のコードスニペットは、SitecoreマスターインデックスおよびSitecoreウェブインデックスの変更・削除されたアイテムを追跡するリストを作成する責任のあるポリシーの例を示しています。

//Policy for the master index
{
 "$type": "Sitecore.Commerce.Plugin.Catalog.SitecoreCatalogIndexingPolicy, Sitecore.Commerce.Plugin.Catalog",
 "Name": "CatalogItemsIndexMaster",
 "IncrementalListName":"CatalogItemsIncrementalIndexMaster",
 "DeletedListName":"CatalogItemsDeletedIndexMaster",
 "EntityTypeNames": 
 "$type":"System.Collections.Generic.List\`1System.String, mscorlib, mscorlib"
 "$values": 
 "Sitecore.Commerce.Plugin.Catalog.Catalog, Sitecore.Commerce.Plugin.Catalog",
 "Sitecore.Commerce.Plugin.Catalog.Category, Sitecore.Commerce.Plugin.Catalog",
 "Sitecore.Commerce.Plugin.Catalog.SellableItem, Sitecore.Commerce.Plugin.Catalog"
 
},
 "IsMasterIndex": true

//Policy for the web index
{
 "$type": "Sitecore.Commerce.Plugin.Catalog.SitecoreCatalogIndexingPolicy, Sitecore.Commerce.Plugin.Catalog",
 "Name": "CatalogItemsIndexWeb",
 "IncrementalListName": "CatalogItemsIncrementalIndexWeb",
 "DeletedListName": "SellableItemsDeletedIndexMaster",
 "EntityTypeNames": {
 "$type": "System.Collections.Generic.List\`1System.String, mscorlib, mscorlib",
 "$values": 
 "Sitecore.Commerce.Plugin.Catalog.Catalog, Sitecore.Commerce.Plugin.Catalog",
 "Sitecore.Commerce.Plugin.Catalog.Category,
Sitecore.Commerce.Plugin.Catalog",
 "Sitecore.Commerce.Plugin.Catalog.SellableItem,
Sitecore.Commerce.Plugin.Catalog"
 
},
 "IsMasterIndex": false

以下の表はインデックスの性質を一覧にし、説明しています:

財産

概要

Name

ポリシーのユニークな名称です。

IncrementalListName

新規および更新されたエンティティを追跡するために作成するための管理リストの名前。

DeletedListName

削除されたエンティティを追跡するために作成する管理リストの名前。

EntityTypeNames

管理リストで追跡できる.NETエンティティタイプの一覧です。

IsMasterIndex

リストがSitecoreマスターインデックスの項目を追跡しているかどうかを指定します。  
  
*true*に設定すると、Commerce Engineがすべての変更を追跡します。  
  
*false*に設定されている場合、Commerce Engineは公開された変更のみを追跡します。

## Sitecoreにおけるカタログエンティティのインデックス更新戦略

Commerce Engineは、Sitecoreマスターやウェブインデックスにカタログエンティティ(カタログ、カテゴリ、販売可能なアイテムを含む)の最新変更を更新するアップデート戦略を定義します。この戦略はバックグラウンドで実行され、エンティティが作成、修正、削除されたかどうかをチェックします。

更新戦略構成は、戦略が作用するインデックスと実行区間を定義します。

インデックス更新戦略が実行されると、新規、変更、削除されたカタログエンティティ(カタログ、カテゴリ、販売可能品目)の管理リストを監視する [カタログインデックスミニオン](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/catalog-minions.html "Catalog minions") (ItemIncrementalIndexMinion)が呼び出されます。インデックスはそれに応じて更新されます。

インクリメンタルインデックス作成が完了した後、Commerce Engine ConnectはGetCatalogMappingsForIdメソッドを使ってカタログマッピングを取得します。最適なパフォーマンスのために、GetCatalogMappingsForIdはバッチ処理をサポートし、20個のSitecore IDをバッチで返します。

sitecore.commerce.engine.connectors.index.common.configファイル(c:\\inetpub\\wwwroot\\<site>\\App\_Config\_Include\\Y.Commerce.Engineフォルダ内)には、Sitecoreコンテンツアイテム検索のためにインデックス化された商務エンティティの更新戦略を定義する構成が保存されています。以下のインデックス更新戦略クラスはデフォルトで利用可能で、カタログ、カテゴリ、販売可能なエンティティの追跡を担当します。

-   CommerceEngineIntervalAsynchronousStrategy クラス

> !重要各更新戦略は異なるCommerce Engineリストを監視するように設定する必要があります。複数の更新戦略が同じリストから読み取ると、関連するすべてのインデックスが時間とともに古くなってしまうことがあります。

以下のコードスニペットは、それぞれSitecoreマスターインデックスとSitecoreウェブインデックスのデフォルトの更新戦略の例を示しています。

<commerceEngineIntervalAsynchronousStrategyMaster role:require="Standalone or ContentManagement" type="Sitecore.Commerce.Engine.Connect.Search.Strategies.CommerceEngineIntervalAsynchronousStrategy, Sitecore.Commerce.Engine.Connect">
 <IncrementalIndexListName>CatalogItemsIncrementalIndexMaster</IncrementalIndexListName>
	 <param desc="interval">\`00:10\`:00</param>
	 <param desc="database">master</param>
</commerceEngineIntervalAsynchronousStrategyMaster>
<commerceEngineIntervalAsynchronousStrategyWeb role:require="Standalone or ContentManagement" type="Sitecore.Commerce.Engine.Connect.Search.Strategies.CommerceEngineIntervalAsynchronousStrategy, Sitecore.Commerce.Engine.Connect">
 <IncrementalIndexListName>CatalogItemsIncrementalIndexWeb</IncrementalIndexListName>
 <param desc="interval">\`00:10\`:00</param>
 <param desc="database">web</param>
</commerceEngineIntervalAsynchronousStrategyWeb>

以下の表は更新戦略の特性を一覧と説明しています。

財産

概要

"IncrementalIndexListName"

作成または更新されたアイテムを追跡するコマースエンジンのリスト名。

"interval"

更新戦略が実行される頻度。

"database"

インデックス化されるアイテム(マスターまたはウェブ)を含むSitecoreデータベースの名前です。

これらの更新戦略は、インデックス設定ファイル( Sitecore.Commerce.Engine.Connectors.Index.Solr.configファイルまたはSitecore.Commerce.Engine.Connectors.Index.Azure.configファイルのいずれか)からの参照を通じてSitecoreインデックスに関連付けられています。

> !注Commerce Engine Connectには、indexing.getChildrenToIndexパイプライン内のSitecore.Commerce.Engine.Connect.Pipelines.GetChildrenToIndexプロセッサが含まれており、デフォルトのSitecoreアイテムクローラーがカタログアイテムをインデックス化しないようにし、それらのアイテムが重複インデックスされないようにします。