インデックスにプロパティフィールドを追加する

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

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

Sitecore Experience Commerce(XC)はデフォルトでカタログエンティティのプロパティ(カタログ、カテゴリ、販売可能なアイテムのプロパティ)をインデックス化します。 Sitecoreインデックスの再構築 が起動されると、Commerce Engineのミニオンがインデックスされたフィールドをsitecore_web_indexとsitecore_master_indexに追加します。デフォルトのインデックスは、例えばHabitatカタログのコンテンツ項目をSitecore Content EditorやSXAストアフロントで検索する機能を提供します。新しい検索フィールド(カスタムフィールドを含む)を追加することで検索インデックスを拡張できます。

検索インデックスに新しいCommerceプロパティフィールドを導入するには、新しいプロパティフィールドを検索プロバイダーが処理可能なフィールドタイプにマッピングする必要があります。このマッピングは、ポリシーセットファイルの設定を通じて実現でき、コードを書いたり変更したりする必要がありません。新しいフィールドをデフォルトの検索フィールドハンドラーにマッピングできればの話です。 SearchプラグインCatalogプラグイン は、カタログプロパティマッピングに使用されるデフォルトの検索フィールドハンドラを定義しています。既存のフィールドハンドラーを使えない場合は、カスタムフィールドハンドラーを作成できます

検索ポリシーセットファイル内のインデックスフィールドマッピング定義

新しいフィールドをインデックスにマッピングする際に考慮すべきアプローチは2つあります。新しいインデックスフィールドを直接Commerceエンティティプロパティにマッピングするか、Solrの動的フィールド などの計算フィールドをフィールドハンドラー実装で使用する方法と似ています。これはSitecoreがSolrフィールド名解決で計算フィールドを使う方法に似ています。

新しいCommerceエンティティプロパティをインデックスに追加するには、検索プロバイダーのポリシーセットファイル(例えばSolrを使用している場合はPlugIn.Search.Solr.PolicySet.*.jsonファイル)のインデックスフィールドタイプへのマッピングを定義します。このポリシーセットファイルは、デプロイメントでインデックスロールをホストしているCommerce Engineのインスタンス(例: C:\inetpub\wwwroot\CommerceMinions_Sc9\wwwroot\data\Environments).

ポリシーセットファイルでは、ItemIndexablePolicyポリシーがインデックスフィールドマッピングを2つの主要な構成セクション、すなわち "FieldTypeMappers" セクションと "Fields" セクションに分けて定義しています。

FieldTypeMappersの設定

"FieldTypeMappers"セクションでは、異なるデータ型がインデックスフィールドにどのようにマッピングされるかを定義するIndexFieldTypeMapper構成の集合を詳述しています。以下のPlugIn.Search.Solr.PolicySet.*.jsonファイルのサンプルは、ウェブインデックスのデフォルト"FieldTypeMappers"定義の例を示しています("IndexName": "sitecore_web_index"):

"$type": "Sitecore.Commerce.Core.PolicySet, Sitecore.Commerce.Core", "Id": "Entity-PolicySet-SolrSearchPolicySet", "Version": 1, "IsPersisted": false, "Name": "SolrSearchPolicySet", "Policies": { "$type": "System.Collections.Generic.List`1Sitecore.Commerce.Core.Policy, Sitecore.Commerce.Core, mscorlib", "$values": { {

"$type": "Sitecore.Commerce.Plugin.Search.ItemIndexablePolicy, Sitecore.Commerce.Plugin.Search", "IndexName": "sitecore_web_index", "FieldTypeMappers": { "TypeName": "stringCollection", "Type": "System.Collections.Generic.List`1System.String", "NameFormat": "{0}_sm", "MultiValued": true }, { "TypeName": "textCollection", "Type": "System.Collections.Generic.List`1System.String", "NameFormat": "{0}_txm", "MultiValued": true

FieldTypeMappersプロパティ

以下の表はFieldTypeMappers構成の性質を一覧かつ説明しています。

性質

概要

"TypeName"

フィールドタイプの名称を定義します。

"Type"

型を実装するクラス名を指定します。

"NameFormat"

型名の形式を定義します。

"MultiValued"

このフィールドタイプに対して、単一の文書に複数の値が含まれているかどうかを示します。

フィールド構成

"Fields"セクションでは、Commerceエンティティやコンポーネントプロパティをインデックスフィールドに実際にマッピングする設定プロパティの集合を詳細に説明しています。以下はPlugIn.Search.Solr.PolicySet.*.jsonファイルのデフォルト"Fields"セクションの例です。

"$type": "Sitecore.Commerce.Core.PolicySet, Sitecore.Commerce.Core", "Id": "Entity-PolicySet-SolrSearchPolicySet", "Version": 1, "IsPersisted": false, "Name": "SolrSearchPolicySet", "Policies": { "$type": "System.Collections.Generic.List`1Sitecore.Commerce.Core.Policy, Sitecore.Commerce.Core, mscorlib", "$values": { { { "FieldTypeMappers": "Fields": { "$type": "Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name": "sxacontent", "Type": "System.Collections.Generic.List`1System.String", "TypeHint": "textCollection", "Handler": { "$type": "Sitecore.Commerce.Plugin.Catalog.SxaContentFieldHandler, Sitecore.Commerce.Plugin.Catalog" } },

場の性質

以下の表は の性質を一覧と定義Fields:

財産

定義

"$type"

フィールド型を実装するクラス名への参照を指定します。

"Name"

フィールド名を指定します。

"Type"

タイプ形式。

"TypeHint"

パス可能な値の種類を定義します。

"Handler"

フィールドハンドラを定義するクラスへの参照を指定します。

"Localizable"

場が局所化可能な文字列かどうかを指定します。

ポリシーセットの設定例

Commerceエンティティプロパティをインデックスフィールドにマッピングする方法は多様です。このセクションではフィールドマッピングのさまざまな構成例を提供します。

マッピング構成は、Solr検索プロバイダーを使用する場合はポリシーセットファイルPlugIn.Search.Solr.PolicySet.*.json 、Azureを使う場合はPlugin.Search.Azure.PolicySet.*.json定義されます。

!注すべての例はSolrを検索プロバイダーとして使っています。同じ例がAzureにも適用されますが、"$type" を "Sitecore.Commerce.Plugin.Search.Azure.AzureIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Azure"

インデックスフィールド名とエンティティプロパティが同じ1

以下は、インデックスフィールド名("DisplayName")とCommerceプロパティ名が同じである例を示しています。Commerceプロパティ名を定義するために "ValueSource" を指定する必要はありません。

{ "$type":"Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name":"DisplayName", "Type":"System.String" }

インデックスフィールド名とエンティティプロパティ名が異なるマッピングの例

インデックスフィールド名が静的Commerceエンティティのプロパティ名に直接対応しないケースもあります。以下はその例を示しています:

{ "$type":"Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name":"CatalogEntityId", "Type":"System.String", "ValueSource":{ "PropertyName":"Id", "PropertyPath":"" } }

実際のプロパティ名とは異なるフィールド名を使ったコンポーネントからのプロパティマッピングの例

以下は、インデックスフィールドDisplayPropertiesColorが "ValueSource".

{ "$type":"Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name":"DisplayPropertiesColor", "Type":"System.String", "TypeHint":"string", "ValueSource": { "PropertyName":"Color", "PropertyPath":"DisplayPropertiesComponent" } }

カスタムフィールドハンドラーを用いたマッピングの例

以下はカスタムハンドラーが指定された例を示しています:

{ "$type":"Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name":"_UniqueId", "Type":"System.String", "Handler":{ "$type":"Sitecore.Commerce.Plugin.Catalog.UniqueIdFieldHandler, Sitecore.Commerce.Plugin.Catalog" } }

インデックス作成のためのポリシーセット設定Composer定義プロパティ

Composerテンプレートを使ってカタログエンティティのカスタムプロパティを定義するビューを追加する場合(つまり、テンプレートをカタログ、カテゴリ、またはセレアブルアイテムエンティティにリンクした場合)、新しいプロパティフィールドをインデックスに追加できます。

マッピング構成は、Solr検索プロバイダーを使用する場合はポリシーセットファイルPlugIn.Search.Solr.PolicySet.*.json 、Azureを使う場合はPlugin.Search.Azure.PolicySet.*.json定義されます。

!注このセクションのすべての例はSolrを検索プロバイダーとして使用しています。同じ例がAzureにも適用されますが、"$type" を に更新する必要があります "Sitecore.Commerce.Plugin.Search.Azure.AzureIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Azure"

作曲家フィールドハンドラー

Catalogプラグインは、Composerで定義したカスタムエンティティプロパティをインデックスに追加できるComposerFieldHandlerクラスを提供します。Composerフィールドハンドラーには、Composerテンプレート内のビュー名とインデックスフィールドにマッピングするカスタムプロパティの名前を指定する"ComposerSource"セクションが含まれています。

"Handler": { "$type": "Sitecore.Commerce.Plugin.Catalog.ComposerFieldHandler, Sitecore.Commerce.Plugin.Catalog", "ComposerSource": { "ViewName": "MyViewName", "PropertyName": "StringPropertyName" }

Composerフィールドハンドラーの設定パラメータは以下の通りです:

  • "$type": は を実装するクラス名を指定します。 ComposerFieldHandler
  • "Viewname": はカスタムエンティティプロパティを定義する子ビュー名を指定します。
  • "PropertyName": はインデックスフィールドに対応するカスタムエンティティプロパティの名前を指定します。

!注ViewnameとPropertyNameは 、カタログエンティティの子ビューで定義されているものです。

Composer文字列プロパティのマッピングの例

以下は、カスタムカタログエンティティプロパティを文字列データ型として定義したものを、適切なインデックスフィールドタイプにマッピングする設定例を示しています。

{ "$type": "Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name": "StringPropertyIndexName", "Type": "System.String", "Handler": { "$type": "Sitecore.Commerce.Plugin.Catalog.ComposerFieldHandler,Sitecore.Commerce.Plugin.Catalog", "ComposerSource": { "ViewName": "MyViewName", "PropertyName": "StringPropertyName" } } }

Composer整数性質の写像の例

以下は、整数データ型として定義されたカスタムカタログエンティティプロパティを適切なインデックスフィールドタイプにマッピングする構成例を示します。

{ "$type": "Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name": "IntegerPropertyIndexName", "Type": "System.Int64", "Handler": { "$type": "Sitecore.Commerce.Plugin.Catalog.ComposerFieldHandler, Sitecore.Commerce.Plugin.Catalog", "ComposerSource": { "ViewName": "MyViewName", "PropertyName": "IntegerPropertyName" } } }

Composerの十進性質の写像の例

以下は、カスタムカタログエンティティプロパティを10進データ型として定義したものを、適切なインデックスフィールドタイプにマッピングするための構成例を示しています。

{ "$type": "Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name": "DecimalPropertyIndexName", "Type": "System.Decimal", "Handler": { "$type": "Sitecore.Commerce.Plugin.Catalog.ComposerFieldHandler, Sitecore.Commerce.Plugin.Catalog", "ComposerSource": { "ViewName": "MyViewName", "PropertyName": "DecimalPropertyName" } } }

Composer DateTimeOffSetプロパティのマッピング例

以下は、DateTimeOffSetデータ型として定義されたカスタムカタログエンティティプロパティを適切なインデックスフィールドタイプにマッピングする構成例を示しています。

{ "$type": "Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name": "DateTimeOffsetPropertyIndexName", "Type": "System.DateTimeOffset", "Handler": { "$type": "Sitecore.Commerce.Plugin.Catalog.ComposerFieldHandler,Sitecore.Commerce.Plugin.Catalog", "ComposerSource": { "ViewName": "MyViewName", "PropertyName": "DateTimeOffsetPropertyName" } } }

Composer Booleanプロパティの写像の例

以下は、ブール型として定義されたカスタムカタログエンティティプロパティを適切なインデックスフィールドタイプにマッピングする構成例を示しています。

{ "$type": "Sitecore.Commerce.Plugin.Search.Solr.SolrIndexFieldConfiguration, Sitecore.Commerce.Plugin.Search.Solr", "Name": "BooleanPropertyIndexName", "Type": "System.Boolean", "Handler": { "$type": "Sitecore.Commerce.Plugin.Catalog.ComposerFieldHandler, Sitecore.Commerce.Plugin.Catalog", "ComposerSource": { "ViewName": "MyViewName", "PropertyName": "BooleanPropertyName" } }

Solr構成の更新

Solrを使っていて、このフィールドをファセットに使いたい場合は、新しいフィールドとデータ型を定義する構成パッチファイルを作成しなければなりません。設定ファイルを /App_Config/Include/Z.Commerce.Engineフォルダに入れてください。以下のコードは構成パッチファイルの例です:

Azure構成の更新

Azureデプロイメントでは、インデックスに新しいフィールドを追加する際に、新しいフィールドやデータ型を定義する設定パッチファイルを作成し、その設定ファイルを /App_Config/Include/Z.Commerce.Engine/ フォルダに入れる必要があります。

以下は構成パッチファイルの例です。 のセクションでAzureの新しいフィールドとフィールドタイプのマッピングを定義します。

Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceComputedStringField, Sitecore.Commerce.Engine.Connect Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceComputedInt32Field, Sitecore.Commerce.Engine.Connect Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceComputedDoubleField, Sitecore.Commerce.Engine.Connect Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceComputedDateTimeField, Sitecore.Commerce.Engine.Connect Sitecore.Commerce.Engine.Connect.Search.ComputedFields.CommerceComputedBooleanField, Sitecore.Commerce.Engine.Connect

この記事を改善するための提案がある場合は、 お知らせください!