我对 SharePoint 2016 中的搜索返回的细化值有疑问。我不知道这何时开始出现,但可能与从 SP 2013 到 SP 2016 的迁移有关?后来我们从搜索细化中返回,值如下所示:
Refinement Value: Organizational:ColAfterSyncUpg GP0|#1dc79002-d32b-4faa-89f3-08ab45051e70 L0|#01dc79002-d32b-4faa-89f3-08ab45051e70|Organizational:ColAfterSyncUpg GTSet|#4642cdf4-872b-4179-96f5-043fbadb0fcf GPP|#4f668d16-2643-436b-b72b-0f180ccae0e6
此值取自已附加两个已爬网属性的托管属性:
ows_<managed_metadata_field_name>
ows_taxId_<managed_metadata_field_name>
. 多亏了这一点,我可以获得正确的 GUID 并在搜索查询中通过一些细化过滤器。但是现在(我不知道什么时候开始发生这种情况),当我将一个新文档添加到一个空集合(没有旧的、正确的文件)时,搜索正在抓取这个字段并只返回:
Refinement Value: Organizational:ColAfterSyncUpg
我想第二个爬取的属性(ows_taxid)是空的。但为什么?SP 2016 中是否发生了一些变化,现在没有创建此属性还是什么?“旧”文件可以抓取,“新”文件不行...
编辑:发现当我手动编辑项目时,一切正常,搜索返回带有 GUIDS 的正确值。所以也许代码有问题?代码非常复杂,但其中的某些部分:
var taxValue =
new TaxonomyFieldValue(field)
{
TermGuid = tagDto.TagId.ToString(),
Label = tagDto.DefaultLabel,
WssId = -1
};
field.SetFieldValue(entity, taxValue);
entity.UpdateOverwriteVersion();