细化值停止为 return "hints"

Refinement values stopped to return "hints"

我对 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 并在搜索查询中传递了一些细化过滤器。但是现在(我不知道这是什么时候开始发生的),当我将一个新文档添加到一个空集合(没有旧的、正确的文件)时,搜索正在抓取该字段并且仅 returns:

Refinement Value: Organizational:ColAfterSyncUpg

我假设第二个爬取的属性(ows_taxid)是空的。但为什么? SP 2016 中是否发生了某些更改,现在未创建此 属性 或什么? "Old" 文件抓取正常,"new" 不正常...

编辑: 发现当我手动编辑该项目时,一切正常,并且使用 GUIDS 搜索 returns 正确的值。那么也许代码有问题?代码相当复杂,但其中的某些部分:

var taxValue =
            new TaxonomyFieldValue(field)
            {
                TermGuid = tagDto.TagId.ToString(),
                Label = tagDto.DefaultLabel,
                WssId = -1
            };
field.SetFieldValue(entity, taxValue);
entity.UpdateOverwriteVersion();

我已经找到导致问题的原因。我的一名团队成员在我们的代码提供文档期间禁用了事件。看起来 SP 有一些生成这些值的事件,如果您需要它们,则无法禁用这些事件。