1. 検索フィールド ハンドラー

チュートリアル: カスタム インデックス フィールド ハンドラーを作成する

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

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

デフォルトの検索プラグインがインデックスに追加する新しいフィールドに適したハンドラタイプを提供していない場合は、カスタムフィールドハンドラクラスを作成できます。

このチュートリアルでは、次の方法について説明します。

  • 新しいフィールド ハンドラーを作成して、新しいフィールドにインデックスを付けます。

  • 新しいフィールドをCE Connect検索プロバイダー設定に追加して、Sitecoreで検索可能にします。

新しいフィールド ハンドラーを作成して、新しいフィールドにインデックスを付けます

カスタムインデックスフィールドの新しいフィールドハンドラを作成するには:

メモ

検索フィールド ハンドラーの現在のアーキテクチャでは、パイプラインまたはコマンドのインスタンスを解決する機能は提供されていません。ハンドラーが必要とする値をコンテキストに追加する必要があります。

  1. 次の例に示すように、Sitecore.Commerce.Plugin.Search.AbstractIndexFieldHandlerクラスを継承し、ComposeValueメソッドを実装するクラスを作成します。

    public class CustomFieldHandler : AbstractIndexFieldHandler
    {
      /// <inheritdoc />
       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}";
       }
    }
    手記

    リアルタイム値のインデックス作成のためにパイプラインへの非同期呼び出しをサポートするカスタム ハンドラーを作成する必要がある場合は、AbstractAsyncIndexFieldHandler クラスからカスタム ハンドラーを派生させる必要があります。

  2. カスタム フィールド ハンドラーを検索インデックスに登録するには、デプロイで使用する検索プロバイダーの検索ポリシー セットにハンドラーを追加する必要があります。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"
                }
            }
        ]
    }
  3. 設定の変更後、Commerce Engine環境をブートストラップ して変更を適用します。

  4. Microsoft IIS Managerで、Commerce Engineミニオン サービス (CommerceMinions_Sc) を再起動します。

  5. Sitecore XPインデックスを手動で再構築します。インデックスを再構築すると、次の例に示すように、新しい検索ハンドラーが検索インデックスに表示されます。

    New search handlers are visible in the search index.

CE Connect検索プロバイダー構成に新しいフィールドを追加する

新しいフィールドをSitecoreで検索可能にするには、CE Connectの検索プロバイダー設定に追加する必要があります。

CE Connectの検索プロバイダー構成に新しいフィールドを追加するには、次のようにします。

  1. Sitecoreサービス インスタンスの \App_Config\Include\Y.Commerce.Engineフォルダーで、検索プロバイダーの設定ファイルを開きます。たとえば、Sorlの場合は、Sitecore.Commerce.Engine.Connectors.Index.Solr.configファイルを開きます。

  2. FieldMapセクションで、新しいfieldName定義を追加します。次の例では、"customfield"という名前の新しいフィールドを追加します。

    <field fieldName="customfield" storageType="YES" indexType="UN_TOKENIZED" vectorType="NO" boost="1f" returnType="string" settingType="Sitecore.ContentSearch.SolrProvider.SolrSearchFieldConfiguration, Sitecore.ContentSearch.SolrProvider"/>
  3. 変更を保存し 、Commerce Engineをブートストラップします。

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