---
title: "計算されたインデックスフィールドを作成する"
slug: "create-a-computed-index-field"
abstract: "計算されたインデックスフィールドの作成方法を示しています。"
---
# 計算されたインデックスフィールドを作成する

単純なインデックス作成のシナリオでは、インデクサーがテキストを取り、インデックスに配置します。時にはデータの保存方法や、より重要なのはどのデータを保存するかをより細かく制御する必要がある場合もあります。計算フィールドを使ってデータを調べ、ロジックを使ってSitecoreがインデックスに何を格納するかを指定します。

例えば、Sitecoreは計算フィールドを使ってアイテムの解析*Created Date*を格納します。インデックスされるすべてのSitecore項目に対して計算されたインデックスフィールドが処理されます。

計算されたインデックスフィールドを作成するには:

1.  Sitecore.ContentSearch.ComputedFields.IComputedIndexFieldインターフェースを実装するクラスを作成します。
    
2.  単純な文字列プロパティを実装し、FieldNameとReturnType。
    
    -   FieldName文字列は、フィールドがインデックスで使用している名前です。
    -   FieldName文字列は、フィールドがインデックスで使用する名前です。returnType文字列は、[SitecoreフィールドタイプがtypeMatches内でマッピングされる](https://doc.sitecore.com/xp/ja/developers/101/platform-administration-and-architecture/using-solr-field-name-resolution.html "Using Solr field name resolution")Solrデータ型を指します。
    
    利用可能な返還タイプはすべて <typeMatches hint="raw:AddTypeMatch>で確認できます。
    
3.  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またはスレッド同期機構を活用してください。
    
4.  Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config設定ファイルで<fields hint="raw:AddComputedIndexField">を探してください。[計算されたフィールドを構成に追加](https://doc.sitecore.com/xp/ja/developers/101/platform-administration-and-architecture/using-solr-field-name-resolution.html "Using Solr field name resolution")する方法についてさらに読むことができます。
    
5.  <field>要素を追加してAddComputedIndexFieldし、その中にカスタムクラスとアセンブリを参照します。計算されたフィールドはSolrの動的フィールドにマッピングされます。例えば:
    
    <fields hint="raw:AddComputedIndexField">
     <field fieldName="nameOfComputedIndexField" returnType="string">
         YourNamespaceHere.ComputedFields.IsClone, YourNamespaceHere
     </field>
    </fields>
    
    > !ヒントこの例は、このトピックのステップ3で定義されたIsCloneクラスを指しています。Sitecore計算されたフィールドnameOfComputedIndexFieldはSolr文字列型フィールドにマッピングされています。
    
6.  インデックスマネージャーを使って検索インデックスを再構築してください(コントロールパネルからインデックスアプリを開くことでアクセス可能)。