計算されたインデックスフィールドを作成する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
単純なインデックス作成のシナリオでは、インデクサーがテキストを取り、それをインデックスに配置します。時には、データの保存方法や、より重要なのはどのデータを保存するかをよりコントロールする必要があることもあります。計算フィールドを使ってデータを調べ、ロジックを使ってSitecoreがインデックスに何を保存するかを指定します。例えば、Sitecoreは計算フィールドを使ってアイテムの解析Created Dateを保存します。インデックスされるすべてのSitecoreアイテムに対して、計算されたインデックスフィールドが処理されます。
計算されたインデックスフィールドを作成するには:
-
Sitecore.ContentSearch.ComputedFields.IComputedIndexFieldインターフェースを実装するクラスを作成します。
-
単純な文字列プロパティを実装し、FieldNameとReturnType。 FieldName文字列は、フィールドがインデックスで使用している名前です。 returnType文字列は、Sitecoreフィールド型がtypeMatches内でマッピングされるSolrデータ型を指します。利用可能な返還タイプはすべて <typeMatches hint="raw:AddTypeMatch>で確認できます。
-
ComputeFieldValue()というメソッドを実装します。このメソッドは、Sitecore.ContentSearch.IIndexableインターフェースを実装し、インデックスするデータを指定する引数を受け入れます。フィールドの値を表すオブジェクトを返します。
クラスは次の例のようになります:
注記ローカル変数の使用は避けましょう。Sitecoreは計算されたインデックスフィールドクラスの同じインスタンスを再利用します。 ComputeFieldValue(IIndexable) 手法は、異なるIIndexable引数を持つ同じ計算されたインデックスフィールドに対して同時に呼び出すことができます。これにより検索インデックスのデータに不一致が生じたり、インデックス作成時のエラーが生じる可能性があります。ローカル変数の使用を避けられない場合は、ThreadStaticやスレッド同期メカニズムを活用してください。
-
Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config設定ファイルで<fields hint="raw:AddComputedIndexField">を探してください。
-
<field>要素を追加してAddComputedIndexFieldし、その中にカスタムクラスとアセンブリを参照してください。計算された場は、例えばSolr動場に写像されます。
ヒントこの例は、このトピックのステップ3で定義されたIsCloneクラスを指しています。Sitecore計算されたフィールドnameOfComputedIndexFieldはSolr文字列型フィールドにマッピングされます。
-
インデックスマネージャーを使って検索インデックスを再構築してください(コントロールパネルからインデックスアプリを開くことでアクセス可能)。