SharePoint搜索非常棒。它可以让你搜索SharePoint内部和外部的内容。此外,它还使您能够搜索组织中的其他员工。,很容易!
不过,它也为您提供了一个了解组织无序的窗口。有多少次你在查看Active Directory时,只发现用户的职位名称像“经理”、“经理”、“高级经理”等?一个人的命名习惯很少会和另一个人完全一样。
现在,如果用户真的想优化这些结果,会发生什么呢?说他们想撤回所有经理人的名单。他们需要创建一个类似这样的查询:

不是很直观,对吧?
另一种选择是回到您的IT部门,让他们标准化这个命名约定。这对他们来说并不是一项困难的任务,除非他们已经超负荷工作,没有时间去做另一项非关键任务。
那么还剩下什么呢?试试自定义实体提取器怎么样?你在说什么?自定义实体提取器是托管属性的关键字映射,允许您自定义搜索细化器。用外行的话说,这是一种将非结构化数据(Mgr、Manager、Senior Manager)映射到单个术语(Manager)的方法。它允许你添加它作为一个搜索细化器,这样你就可以很容易地过滤“管理器”。
在我们的教程中,我将以棒球为例。我们的人员搜索返回以下球员。

每个球员都有一个独特的头衔,“指定打击者”,“右外野”和“二垒”。我们想通过“内野”或“外野”来搜索这些球员。这类似于将“经理”/“经理”/“高级经理”作为工作头衔,希望只通过“经理”或“合伙人”进行过滤。
首先,我们需要创建自定义抽取字典。这是一个逗号分隔(CSV)文件,它将定义我们的映射。我将命名这个positionsdictionary。csv并将所有内野位置映射到"内野"所有外野位置映射到"外野"

接下来,我们需要将字典导入到搜索应用程序中。这里是我们需要决定它是什么类型的提取。“第一垒”应该完全匹配我们在AD中的值,还是应该只匹配其中的一部分,并且区分大小写?你可以查看不同的类型在技术资源库。在本例中,我们将使用不区分大小写的单词提取类型,并精确匹配整个单词。以管理员身份在SharePoint上运行如下PowerShell cmdlet:
| $searchApp = Get-SPEnterpriseSearchServiceApplication import - spenterprisesearchcustomextract dictionary -SearchApplication $searchApp -FileName \UNC-PATHPositionsDictionary.csv -DictionaryName microsoft . userdictionaries . entityextract . custom . word .1 .搜索引擎 |
FileName参数需要是一个UNC路径。DictionaryName参数需要与TechNet上定义的完全一样(如果您遵循上面的链接)。如果操作正确,您将看到“字典导入成功”。
现在,我们必须将字典/映射链接到作业标题托管属性。要做到这一点,请访问中央管理中的搜索服务应用程序。点击左侧导航“Queries and Results”下的“Search Schema”链接,搜索托管属性“JobTitle”,点击进行编辑。然后向下滚动到“自定义实体提取”部分。

这就是我们需要将托管属性链接到字典的地方。因为我们使用了第一个单词提取字典,所以我们需要检查它。如果您使用了不同的字典,那么您需要选择那个字典。点击“确定”,然后运行一个完整的爬行。
因为我们不能更改默认的人物搜索页面,所以我在搜索中心创建了一个精确的人物搜索页面的副本,并更改了“人物”链接到新页面。唯一的区别是,在我的细化webpart中,我使用了“WordCustomRefiner1”而不是“JobTitle”,我还为它指定了显示名称“JobTitle”,就像实际的JobTitle管理属性一样。
点击“确定”,保存/签到/发布人物搜索页面。
现在来测试一下。如果我们再查一遍,你会发现我们只有两个不同的职级,内野和外野。我们可以在此基础上改进我们的结果。

就像这样,我们成功地过滤了我们想要的员工,而没有更新活动目录或打扰它。