如何干净地删除搜索安全修剪器(ISecurityTrimmer2)
-
10-12-2019 - |
题
我在SharePoint2010中创建了一个非常简单的ISecurityTrimmer2实现。注册了它,一切都按预期工作。
我使用以下PowerShell删除了它:
$searchApp = Get-SPEnterpriseSearchServiceApplication "Search Service Application"
$trimmer = $searchApp | Get-SPEnterpriseSearchSecurityTrimmer
$trimmer | Remove-SPEnterpriseSearchSecurityTrimmer -SearchApplication "Search Service Application"
Powershell警告我,它忽略了额外的参数-SearchApplication,但该命令没有它就无法工作。我已经验证了Get-SPEnterpriseSecurityTrimmer没有返回任何结果。
我现在没有得到任何搜索结果,在查询处理器的ULS中出现以下错误:
Error occurred when executing pluggable security trimmer with Id 1 System.InvalidOperationException: Could not find Pluggable Security Trimmer with Id '1'.
at Microsoft.Office.Server.Search.Administration.Security.PluggableSecurityTrimmerManager.Instantiate(Int32 idRequested)
at Microsoft.Office.Server.Search.Administration.Security.PluggableSecurityTrimmerManager.GetPluggableSecurityTrimmer(Int32 id)
at Microsoft.Office.Server.Search.Query.PluggableSecurityTrimmer.Trim(UInt32[] docIds, Boolean[] displayDoc, UInt32 oldScannedCount, UInt32 logicalStartPosition, UInt32 desiredResultCount)
我已经做到了 iisreset
并且仍然得到相同的错误。显然它不在那里,但为什么查询处理器仍然在寻找它,我怎样才能完全删除它?
解决方案
显然,做一个新的完全爬行修复它。
我在评论中找到了解释 关于这篇文章2013后修剪器 由 斯维纳尔*拉斯穆森
初始满的原因 抓取是内容对象(文档)需要关联 用注册的修剪器。它将把一个整数ID放在那些 匹配爬网规则。一旦内容被"标记"与 后修整器,所述后修整器被调用。及任何后续更改 到微调逻辑将不需要任何抓取之后,只要 因为你没有重新注册修剪器。
根据我的经验,如果你想做一些改变安全修整器的强名称的事情(例如更改程序集版本),您可以删除它并使用相同的ID重新添加它,而无需完全爬网。仅在2013上,这还需要重新启动搜索主机控制器服务。