在SharePoint用户配置文件中搜索自定义属性

问题描述:

我在用户配置文件中创建了自定义属性。 我想通过所有的用户配置文件和输出中的自定义属性包含特定字符串在SharePoint用户配置文件中搜索自定义属性

例如这些配置文件进行搜索:

User1-自定义属性值是1,2,3 User2-自定义属性在2,4,5 User3-自定义属性值值是4,6,8

我想输出的所有配置文件中的自定义属性包含2 (使用C#代码)

所以输出应该有User1和User2

有人可以建议最好的方式来实现这个? 我找到了一些链接在互联网上搜索用户配置文件使用KeyWord搜索,但不知道这些方法是否可以用来搜索自定义属性。 例子:https://www.collaboris.com/how-to-use-search-keywordquery-to-query-user-profiles-in-sharepoint/

我使用SharePoint 2013

我们最终推动定制的属性,我们添加到用户的个人资料到托管属性。 此外,似乎我们可以在托管属性上执行通配符搜索,因此我们会执行像“CustomProperty:*,2,*”这样的人员搜索,以便它将返回其用户个人资料的定制属性中编号为2的所有用户个人资料

有趣通配符只能在年底开箱即用的属性,如名字,所以我们不能做这样的事情姓:并期望它会返回John Doe的个人资料 但我们肯定可以做到这一点 - 姓:JOH *和将返回名字以Joh开头的所有人(其中包括John Doe)

但是它看起来像通配符在开始和结束时都起作用自定义的管理特性(这帮助了大量的我们)

关于如何使用C#返回的搜索结果,我们使用这个 -

private DataTable GetPeople(SPSite spSite, string queryText) 
    { 

     var keywordQuery = new KeywordQuery(spSite) 
     { 
      QueryText = queryText, 
      KeywordInclusion = KeywordInclusion.AllKeywords, 
      SourceId = System.Guid.Parse("b09a7990-05ea-4af9-81ef-edfab16c4e31") 
     }; 

     keywordQuery.RowLimit = this.MaxProfilesToDisplay; 

     keywordQuery.SelectProperties.Add("AccountName"); 
     keywordQuery.SelectProperties.Add("PictureURL"); 

     SearchExecutor e = new SearchExecutor(); 
     ResultTableCollection rt = e.ExecuteQuery(keywordQuery); 
     var tab = rt.Filter("TableType", KnownTableTypes.RelevantResults); 
     var result = tab.FirstOrDefault(); 
     DataTable DT = result.Table; 
     return DT; 
    } 

,我们将调用此类似

DataTable dt = GetPeople(SPContext.Current.Site, "CustomProperty:*,2,*");