Не уверен, получу ли я полную картину здесь.Может быть, ваш подход совершенно оправдан, но я не думаю, что видел его раньше.Вместо определения нового типа вы можете повторно использовать *_sm
(многозначная строка) и выполнить разбиение строки во время индексации на стороне Sitecore.Обычно вам не нужно больше типов полей, чем те, которые предоставляет sitecore, и обычно проще поддерживать весь код в вашем решении VS, а не зависеть от дополнительной конфигурации Solr.(В Sitecore 9 вы можете развернуть управляемую схему Solr из панели управления.)
Простое поле вычисляемого поля может выглядеть так:
<fields hint="raw:AddComputedIndexField">
<field fieldName="keywords" returnType="stringCollection">
Your.Name.Space.YourComputedFieldClass, YourAssembly
</field>
</fields>
И реализация класса может выглядеть как-токак это:
public class YourComputedFieldClass : IComputedIndexField
{
public object ComputeFieldValue(IIndexable indexable)
{
var item = indexable as SitecoreIndexableItem;
var fieldValue = item?.Item?["Keywords"]
if (string.IsNullOrWhitespace(fieldValue)) {
return null;
}
return fieldValue.Split(',');
}
public string FieldName { get; set; }
public string ReturnType { get; set; }
}