計算フィールドを追加できます。 これは、それに関するジョン・ウェストの投稿です。 以下は、画像の URL だけを取得するための要約された例です。
Sitecore.ContentSearch.ComputedFields.IComputedIndexField を実装するクラスを作成します。
public class ImageIndexField : IComputedIndexField
{
public string FieldName { get; set; }
public string ReturnType { get; set; }
public object ComputeFieldValue(IIndexable indexable)
{
Assert.ArgumentNotNull(indexable, "indexable");
var indexableItem = indexable as SitecoreIndexableItem;
if (indexableItem == null)
{
Log.Warn(string.Format("{0} : unsupported IIndexable type : {1}", this, indexable.GetType()), this);
return null;
}
ImageField img = indexableItem.Item.Fields["MyImageField"];
return img == null || img.MediaItem == null ? null : MediaManager.GetMediaUrl(img.MediaItem);
}
}
次に、次のような構成インクルードを追加します。
<sitecore>
<contentSearch>
<configuration type="Sitecore.ContentSearch.LuceneProvider.LuceneSearchConfiguration, Sitecore.ContentSearch.LuceneProvider">
<defaultIndexConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider">
<fields hint="raw:AddComputedIndexField">
<field fieldName="MyImageFieldUrl" storageType="YES" indexType="TOKENIZED">sc70.Search.ComputedFields.ImageUrlIndexField, sc70</field>
</fields>
</defaultIndexConfiguration>
</configuration>
</contentSearch>
</sitecore>
上記のフィールド名はハードコーディングされていることに注意してください。構成からパラメーターとしてそれを渡すことができるかどうかはわかりません。Sitecore は計算フィールドごとに個別のクラスを作成し、継承を使用して再利用しているようです。