Зашел в этот выпуск на днях, но еще не нашел ничего (от googling), который решает эту проблему.Sitecore 8.1 вычисленное поле индекса для индексации только изображения alt text on solr
Я использую Solr как мой двигатель индексации. Я пытаюсь проиндексировать изображение в моем шаблоне. Индексирование работает нормально, но не индексирует медиа-URL (который я возвращаю из своего кода), вместо этого он индексирует текст ALT изображения. Если текст ALT отсутствует только тогда, он индексирует медиа-URL. У меня есть моя конфигурация индекса в отдельном файле.
Я думаю, что нижняя строка в файле Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config по умолчанию, вероятно, возится с моей конфигурацией. Но как переписать это только для поля «main_image».
<fieldReader fieldTypeName="image" fieldReaderType="Sitecore.ContentSearch.FieldReaders.ImageFieldReader, Sitecore.ContentSearch" />
Ниже, как моя конфигурация выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<myindex>
<indexConfigurations>
<mySolrIndexConfiguration ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration">
<fields hint="raw:AddComputedIndexField">
<field fieldName="main_image" returnType="text">My.Indexing.Namespace.MyMainImageIndexing,My.Indexing</field>
<field fieldName="thumbnail" returnType="text">My.Indexing.Namespace.MyThumbnailIndexing,My.Indexing</field>
</fields>
</mySolrIndexConfiguration>
</indexConfigurations>
</myindex>
</sitecore>
</configuration>
Одна из реализаций выглядит, как показано ниже (другой похож)
public class MyMainImageIndexing : IComputedIndexField
{
public string Parameters { get; set; }
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["Main Image"];
return (img == null || img.MediaItem == null) ? null : MediaManager.GetMediaUrl(img.MediaItem);
}
}
Может кто-нибудь, пожалуйста, пролить некоторый свет здесь о том, как решить эту проблему.
Заранее спасибо.
P.S> Я видел пост Джона Уэста здесь http://www.sitecore.net/de-de/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2013/05/sitecore-7-pre-render-image-fields.aspx