我遇到了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();
答案 0 :(得分:0)
我发现了导致问题的原因。我的一个团队成员在我们的代码提供文档期间禁用了事件。看起来SP有一些事件会生成这些值,并且如果需要它们,则不能禁用这些事件。