Indexing 自定义Sitecore Solr索引计算字段返回错误值

Indexing 自定义Sitecore Solr索引计算字段返回错误值,indexing,solr,sitecore,Indexing,Solr,Sitecore,我有一个叫做Terms的计算字段。此字段将Sitecore存储多列表字段的guid值列表读取为逗号分隔的值字符串。当我触发索引重建并设置断点时,我可以看到代码按预期执行任务,但由于某些原因,在索引中,该值仍存储为guid字符串数组。我不知道断线在哪里 检查Solr并将查询配置为返回xml,我可以看到terms字段的存储方式如下: b7ba58ef002b4554808a1d423ca574d8 95680bf346d142aeb0d8f189300ea3f2 下面可以看到用于填充计算字段的类

我有一个叫做Terms的计算字段。此字段将Sitecore存储多列表字段的guid值列表读取为逗号分隔的值字符串。当我触发索引重建并设置断点时,我可以看到代码按预期执行任务,但由于某些原因,在索引中,该值仍存储为guid字符串数组。我不知道断线在哪里

检查Solr并将查询配置为返回xml,我可以看到terms字段的存储方式如下:


b7ba58ef002b4554808a1d423ca574d8
95680bf346d142aeb0d8f189300ea3f2
下面可以看到用于填充计算字段的类

名称空间ASHPEngine.ComputedFields
{
公共类术语:Sitecore.ContentSearch.ComputedFields.IComputedIndexField
{
公共对象ComputeFieldValue(可索引)
{
Assert.ArgumentNotNull(可索引,“可索引”);
var scIndexable=可作为Sitecore.ContentSearch.SitecoreIndexableItem索引;
if(scIndexable==null)
{
返回false;
}
if(String.Compare(scIndexable.Item.Database.Name,“core”,System.StringComparison.OrdinalIgnoreCase)==0)
{
返回false;
}
if(!scIndexable.Item.InheritsFrom(IBaseArticleConstants.TemplateName))返回String.Empty;
var termsField=scIndexable.GetFieldByName(INewsConstants.TermsFieldName);
{
var retval=新的StringBuilder();
var terms=termsField.Value.ToString().Split(新[]{'|'},StringSplitOptions.RemoveEmptyEntries.ToList();
foreach(变量id的术语)
{
var termItem=scIndexable.Item.Database.GetItem(新ID(ID));
retval.Append(termItem.Name+“,”);
}
return retval.Length>0?retval.Remove(retval.Length-2,2).ToString():string.Empty;
}
}
公共字符串字段名{get;set;}
公共字符串返回类型{get;set;}
}
以及配置:


$(id)
$(id)
mydll.ComputedFields.ExternalLink,mydll
mydll.ComputedFields.Image,mydll
mydll.ComputedFields.Terms,mydll
mydll.ComputedFields.Url,mydll
mydll.ComputedFields.ParentName,mydll
网状物
/网站核心/内容
假的
假的

尝试将计算字段的返回类型更改为字符串而不是文本:

<field fieldName="terms" returnType="string">mydll.ComputedFields.Terms, mydll</field>
mydll.ComputedFields.Terms,mydll

我可以通过完全删除返回类型来解决此问题,如下所示:

<field fieldName="terms">mydll.ComputedFields.Terms, mydll</field>
mydll.ComputedFields.Terms,mydll

文本返回类型确保返回完整字符串,而字符串返回类型将被标记化,这是不需要的