ウォークスルー
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
デフォルトのSearchプラグインが新たに追加したいフィールドに適したハンドラタイプを提供していない場合、カスタムフィールドハンドラクラスを作成できます。このウォークスルーでは以下の方法を説明します:
- 新しいフィールドをインデックスするために新しいフィールドハンドラを作成します。
- CE Connect検索プロバイダーの設定に新しいフィールドを追加して、Sitecoreで検索可能にします。
新しいフィールドをインデックスするためのカスタムフィールドハンドラーを作成します
カスタムフィールドハンドラーを作成するには:
!注現在の検索フィールドハンドラのアーキテクチャでは、パイプラインやコマンドのインスタンスを解決する機能がありません。ハンドラーがコンテキストに必要とする値を追加しなければなりません。
-
Sitecoreから継承するクラスを作成します 。Commerce.Plugin.Search。AbstractIndexFieldHandlerクラスを導入し、以下の例のようにComposeValueメソッドを実装します。
public class CustomFieldHandler : AbstractIndexFieldHandler { ///
public override object ComposeValue(object source, ConcurrentDictionary<string, object> context) { if (context == null || source == null || !(source is CatalogItemBase entity)) { return null; } return $"Custom field handler value: {entity.Id}"; } } -
カスタムフィールドハンドラを検索インデックスに登録するには、展開で使用している検索プロバイダーの検索ポリシーセットに追加する必要があります。Azure Search(PlugIn.Search.Azure.PolicySet-1.0.0.json)とSolr(PlugIn.Search.Solr.PolicySet-1.0.0.json)のポリシーセットは、それぞれSitecore.Commerce.Plugin.Search.ItemIndexablePolicy, Sitecore.Commerce.Plugin.Search型の2つのポリシーを含んでいます。これらのポリシーは、接続されたSitecore XPサイトのマスターデータベースとWebデータベースを表します。両方のインデックスの “Fields” コレクションにカスタムフィールドハンドラを追加し、新しいハンドラを登録し、コンテンツがマスターデータベースとWebデータベースの両方にインデックスされていることを確認します。
以下は、PlugIn.Search.Solr.PolicySet-1.0.0.jsonファイルに追加されたカスタムSolrフィールドハンドラー("Company.Project.Search.CustomFieldHandler, Company.Project")の例を示しています。
{ "$type": "Sitecore.Commerce.Plugin.Search.ItemIndexablePolicy, Sitecore.Commerce.Plugin.Search", "IndexName": "sitecore_web_index", "FieldTypeMappers": … , "Fields": { "$type": "Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name": "customfield", "Type": "System.String", "Handler": { "$type": "Company.Project.Search.CustomFieldHandler, Company.Project" } } }
以下は、PlugIn.Search.Azure.PolicySet-1.0.0.jsonファイルに追加されたカスタムAzure Searchフィールドハンドラー("Company.Project.Search.CustomFieldHandler, Company.Project")の例を示しています。
{ "$type": "Sitecore.Commerce.Plugin.Search.ItemIndexablePolicy, Sitecore.Commerce.Plugin.Search", "IndexName": "sitecore_web_index", "FieldTypeMappers": … , "Fields": { "$type": "Sitecore.Commerce.Plugin.Search.Azure.AzureIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Azure", "Name": "customfield", "Type": "System.String", "Handler": { "$type": "Company.Project.Search.CustomFieldHandler, Company.Project" } } }
-
設定変更後、Commerce Engine環境をブートストラップして 変更を適用してください。
-
IISマネージャー Microsoft、Commerce Engineのミニオンサービス(CommerceMinions_Sc)を再起動してください。
-
インデックスSitecore XP手動で再構築します。インデックスを再構築した後、新しい検索ハンドラが検索インデックス上で確認されます。以下の例に示されています:

CE Connect検索プロバイダー設定に新しいフィールドを追加する
新しいフィールドをSitecoreで検索可能にするには、CE Connectの検索プロバイダー設定に追加する必要があります。
CE Connectの検索プロバイダー設定に新しいフィールドを追加するには:
-
Sitecoreサービスインスタンスの \App_Config\Include\Y.Commerce.Engineフォルダで検索プロバイダーの設定ファイルを開きます。例えば、Sorlの場合はSitecore.Commerce.Engine.Connectors.Index.Solr.configファイルを開いてください。
!注検索プロバイダーとしてAzureを使う場合は、Sitecore.Commerce.Engine.Connectors.Index.Azure.configファイルを開いてください。
-
FieldMapセクションで新しいfieldName定義を追加します。次の例では、"exampleexternalsettingproperty"という新しいフィールドを追加します。
-
変更を保存して 、Commerce Engineをブートストラップしてください。