計算済みインデックス フィールドの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
単純なインデックス作成シナリオでは、インデクサーはテキストを取得してインデックスに配置します。データの保存方法や、さらに重要なことに、どのデータを保存するかをより詳細に制御する必要がある場合があります。計算フィールドを使用してデータを検索し、ロジックを使用してSitecoreがインデックスに格納する内容を指定します。たとえば、Sitecoreは計算フィールドを使用して、解析されたアイテムのCreated Dateを格納します。計算されたインデックス フィールドは、インデックスが作成されるすべてのSitecoreアイテムに対して処理されます。
計算済みインデックス フィールドを作成するには:
-
Sitecore.ContentSearch.ComputedFields.IComputedIndexFieldインターフェイスを実装するクラスを作成します。
-
FieldNameとReturnTypeという名前の単純な文字列プロパティを実装します。FieldName文字列は、フィールドがインデックスで使用する名前です。returnType文字列は、Sitecoreフィールド タイプが typeMatches.使用可能なすべての戻り値の型は、<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文字列タイプ フィールドにマッピングされます。
-
インデックス作成マネージャーを使用して検索インデックスを再構築します (コントロールパネルからインデックス作成アプリを開いてアクセスします)。