チュートリアル: SXA インデックスに Commerce カタログ アイテムを含める
Sitecore XC 9.3 以降、Commerce Engine がカタログ エンティティ (カタログ アイテムとカテゴリー) のインデックス作成を行います。インデックス更新戦略は、Sitecore インデックス (sitecore_master_index
と sitecore_web_index
) を最新のカタログ アイテムを含んだ最新の状態に保ち、SXA Storefront での商品検索を効果的に可能にします。対照的に、Sitecore Experience Accelerator (SXA) は、デフォルトでは異なるインデックス (sitecore_sxa_master_index
と sitecore_sxa_web_index
) を使用して、SXA Web サイトでのページ検索を可能にします。ただし、必要に応じて、デフォルトの設定を変更して、Sitecore Master index と Web index の代わりに、ページ アイテムに加えて、SXA インデックスにカタログ アイテムを含めることができます。
2 つの異なるインデックスに同じカタログ データ セットを含めることはできません。この制限は Master index と Web index には適用されません。これらのインデックスには実際には同じカタログ データ セットが含まれないためです。
このチュートリアルでは、次の方法について説明します。
-
SXA インデックスを Commerce Engine Connect に追加する
-
SXA インデックスを GetChildrenToIndex プロセッサーに追加する
-
Commerce Engineの検索ポリシーと Solr ポリシーを更新する
-
Sitecore でストアフロントのインデックス設定を変更する
このチュートリアルでは、すでに以下のことが行われていることを前提としています。
-
新しい Solr コアを作成して初期化するために、Solr Web サイトの指示に従って、必要な SXA Solr コアを作成した。
-
それに応じて、
<SXASite>\App_Config\Modules\SXA\Sitecore.XA.Foundation.Search.Solr.config
ファイルを更新した。
SXA インデックスを Commerce Engine Connect インデックス設定に追加する
デフォルトでは、CE Connect のデフォルトのコンテンツ検索インデックス作成戦略により、Sitecore Master index と Web index が更新されます。Commerce Engine Connect 設定をカスタム SXA インデックス名の名前で更新する必要があります。
SXA インデックスを Commerce Engine Connect インデックス設定に追加するには:
-
inetpub\wwwroot\<site>\App_Config\Include\Y.Commerce.Engine\
フォルダーで、Sitecore.Commerce.Engine.Connectors.Index.Solr.config
ファイルを開きます。 -
<index id="sitecore_web_index">
で始まるセクションを見つけて、index id
値を SXA Web index の名前で置き換えます。次に例を示します。RequestResponseshell<index id="sitecore_sxa_web_index"> <strategies hint="list:AddStrategy"> <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/commerceEngineIntervalAsynchronousStrategyWeb" /> </strategies> <locations hint="list:AddCrawler"> <crawler type="Sitecore.Commerce.Engine.Connect.Search.Crawlers.CommerceEngineCrawler, Sitecore.Commerce.Engine.Connect"> <ListName>SitecoreItemIndexingWeb</ListName> </crawler> </locations> </index>
-
カスタム SXA Master index を構成に追加します。
<index id="sitecore_master_index">
を定義する既存のブロックをコピーして貼り付け、インデックス ID を<index id="sitecore_sxa_master_index">
に変更します。次に例を示します。
RequestResponseshell<index id="sitecore_sxa_master_index"> <strategies hint="list:AddStrategy"> <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/commerceEngineIntervalAsynchronousStrategyMaster" /> </strategies> <locations hint="list:AddCrawler"> <crawler type="Sitecore.Commerce.Engine.Connect.Search.Crawlers.CommerceEngineCrawler, Sitecore.Commerce.Engine.Connect"> <ListName>SitecoreItemIndexingMaster</ListName> </crawler> </locations> </index>
-
変更を保存します。
SXA インデックスを GetChildrenToIndex プロセッサーに追加する
カスタム SXA インデックスを Sitecore.Commerce.Engine.Connect.Pipelines.GetChildrenToIndex
プロセッサーのインデックスのリストに追加する必要があります。Sitecore XC は Commerce アイテムにインデックスを付ける独自のクローラーを実装するため、このプロセッサーは、Sitecore インデックス クローラーが Commerce アイテムに不必要に再びインデックスを付けるのを防ぎます。
カスタム SXA インデックスをプロセッサーに追加するには:
-
C:\inetpub\wwwroot\<CommerceEngine>\App_Config\Include\Y.Commerce.Engine
フォルダーで、Sitecore.Commerce.Engine.Connectors.Index.Common.config
ファイルを開きます。 -
次の例に示すように、カスタム SXA Master index および SXA Web index をインデックスのリストに追加します。
RequestResponseshell<pipelines> <indexing.getChildrenToIndex> <!-- Insert our processor first so that we can intercept Commmerce items that we do not want indexed into the below referenced indexes. As Commerce uses a separate crawler to index Commerce items, we insert this processor to stop the default crawlers from attempting to index Commerce items. By default the processor below will skip indexing of children of the following locations or templates: Commerce Catalog Folder ID {334E2B54-F913-411D-B159-A7B16D65242C} --> <processor type="Sitecore.Commerce.Engine.Connect.Pipelines.GetChildrenToIndex, Sitecore.Commerce.Engine.Connect" patch:source="Sitecore.Commerce.Engine.Connectors.Index.Common.config"> <!-- The list of indexes that we do not want commerce items to be indexed to --> <Indexes hint="list:AddString" help="Add index names below to stop crawling of Commerce items by the default crawler"> <IndexName>sitecore_master_index</IndexName> <IndexName>sitecore_web_index</IndexName> <IndexName>sitecore_testing_index</IndexName> <IndexName>sitecore_suggested_test_index</IndexName> <IndexName>sitecore_sxa_master_index</IndexName> <IndexName>sitecore_sxa_web_index</IndexName> </Indexes
Commerce Engineの検索ポリシーと Solr ポリシーを更新する
Commerce Engine 検索ポリシー セットおよび Solr ポリシー セットのインデックス名を更新する必要があります。
Commerce Engine 検索ポリシーと Solr ポリシーを更新するには:
-
C:\inetpub\wwwroot\<CommerceEngine>\wwwroot\data\Environments\PlugIn.Search.PolicySet-1.0.0.json
ファイルを開きます。 -
以下の変更を行います。
-
"Name": "<site>_web_index"
を検索して、値を SXA Web index の名前に一致するように、たとえば、"<site>_sxa_web_index"
に変更します。 -
"Name": "<site>_master_index"
を検索して、値を SXA Master index の名前に一致するように、たとえば、"<site>_sxa_master_index"
に変更します。 -
"InternalIndexName": "sitecore_web_index"
を検索して、値を SXA Web index の名前に一致するように、たとえば、"sitecore_sxa_web_index"
に変更します。 -
"InternalIndexName": "sitecore_master_index"
を検索して、値を SXA Master index の名前に一致するように、たとえば、"sitecore_sxa_master_index"
に変更します。
-
-
C:\inetpub\wwwroot\<CommerceEngine>\wwwroot\data\Environments\PlugIn.Search.Solr.PolicySet-1.0.0.json
ファイルを開きます。 -
以下の変更を行います。
-
"IndexName": "sitecore_web_index"
を検索して、値を SXA Web index の名前に一致するように、たとえば、"sitecore_sxa_web_index"
に変更します。 -
"IndexName": "sitecore_master_index"
を検索して、値を SXA Master index の名前に一致するように、たとえば、"sitecore_sxa_master_index"
に変更します。 -
"SearchScopeName": "<site>_web_index"
を検索して、値を SXA Web index の名前に一致するように、たとえば、"<site>_sxa_web_index"
に変更します。 -
"SearchScopeName": "<site>_master_index"
を検索して、値を SXA Master index の名前に一致するように、たとえば、"<site>_sxa_master_index"
に変更します。
-
-
変更を保存します。
-
Commerce Engine をブートストラップして、設定の変更を登録します。
-
IIS マネージャーで、IIS リセットを実行します。
Sitecore でストアフロントのインデックス設定を変更する
SXA インデックスを使用するように、ストアフロント インデックス構成を変更するには:
-
Sitecore にログインします。
-
コンテンツ エディターで、Sitecore/Storefront/Settings/Site Grouping/Storefront アイテムに移動します。
-
Indexing
セクションで、SXA Web index と Master index の名前を反映するようにインデックス名を更新します。次に例を示します。
-
Web サイトをパブリッシュします。
-
SXA Master index と Web index を再構築します。