1

Sitecore のアイテムから画像フィールドを取得/インデックス化するインデックス フィールドを作成しました。ただし、インデックスは画像の代替テキストを返しますが、これはあまり役に立ちません..

この行を Lucene インデックス構成に追加しようとしました

<field fieldName="restaurant_image" storageType="YES"  indexType="TOKENIZED"          vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider" />

画像パス、または画像 ID、または画像タグを取得する必要がありますが、これを行う方法がわかりません..

任意の助けをいただければ幸いです。

4

2 に答える 2

2

計算フィールドを追加できます。 これは、それに関するジョン・ウェストの投稿です。 以下は、画像の 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 は計算フィールドごとに個別のクラスを作成し、継承を使用して再利用しているようです。

于 2013-10-25T16:18:26.707 に答える
0

6.6 で scSearchContrib を使用して同様のことを行いました。

画像の URL を取得する動的フィールドを作成しました

public class ImageUrlField : BaseDynamicField
    {
        public override string ResolveValue(Item item)
        {
                FileField fileField = item.Fields["Image"];

                var url = StringUtil.EnsurePrefix('/', MediaManager.GetMediaUrl(fileField.MediaItem));

                return url;            
        }
    }

構成ファイルで次のように参照されます:-

<dynamicField type="[NAMESPACE].ImageUrlField, [DLL]" name="image url" storageType="YES" indexType="UN_TOKENIZED" vectorType="NO" boost="1f"  />    

7.0 でも同様のことができるはずです。

于 2013-10-25T12:25:08.230 に答える