我对sitecore和solr的组合非常陌生。.模式标记生成器有一个小问题,它无法正常工作。.我正在关注本文档
Sitecore 9 Solr: https://doc.sitecore.net/sitecore_experience_platform/setting_up_and_maintaining/search_and_indexing/using_solr_field_name_resolution
当我进行索引时,我的字段值为:a,b,c,我预计在solr上将为[“ a”,“ b”,“ c”],但其中包含[“ a,b,c “]
这是我的Sitecore配置
<fieldMap>
<typeMatches hint="raw:AddTypeMatch">
<typeMatch type="System.Collections.Generic.List`1[System.String]" typeName="commaDelimitedCollection" fieldNameFormat="{0}_cd"
multiValued="true" settingType="Sitecore.ContentSearch.SolrProvider.SolrSearchFieldConfiguration, Sitecore.ContentSearch.SolrProvider"/>
</typeMatches>
<fieldNames hint="raw:AddFieldByFieldName">
<field fieldName="Keywords" returnType="commaDelimitedCollection"/>
</fieldNames>
</fieldMap>
这是我的Solr模式
<fieldType name="commaDelimited" class="solr.TextField" multiValued="true">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="\s*,\s*"/>
</analyzer>
</fieldType>
<dynamicField name="*_cd" type="commaDelimited" multiValued="true" indexed="true" stored="true"/>
您知道上面的配置有什么问题吗?
谢谢
答案 0 :(得分:1)
不确定我是否能在这里看到完整图片。也许您的方法是完全正确的,但我认为我以前从未见过这种方法。您可以重用*_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; }
}