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

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

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

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

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

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

  1. Sitecore.ContentSearch.ComputedFields.IComputedIndexFieldインターフェースを実装するクラスを作成します。

  2. 単純な文字列プロパティを実装し、FieldNameとReturnType。

    利用可能な返還タイプはすべて <typeMatches hint="raw

    >で確認できます。

  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設定ファイルでを探してください。計算されたフィールドを構成に追加する方法についてさらに読むことができます。

  5. 要素を追加してAddComputedIndexFieldし、その中にカスタムクラスとアセンブリを参照します。計算されたフィールドはSolrの動的フィールドにマッピングされます。例えば:

         YourNamespaceHere.ComputedFields.IsClone, YourNamespaceHere

    !ヒントこの例は、このトピックのステップ3で定義されたIsCloneクラスを指しています。Sitecore計算されたフィールドnameOfComputedIndexFieldはSolr文字列型フィールドにマッピングされています。

  6. インデックスマネージャーを使って検索インデックスを再構築してください(コントロールパネルからインデックスアプリを開くことでアクセス可能)。

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