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