SharePoint Server搜索返回特定客户端ID的文档

时间:2014-08-25 19:48:36

标签: c# sharepoint sharepoint-2013

我想使用SharePoint Server搜索并返回特定客户端ID的文档。

代码现在通过通配符搜索返回所有内容:

  using (ClientContext clientContext = new ClientContext(hostWeb))
        {
            clientContext.Credentials = new System.Net.NetworkCredential(hostWebAdmin, hostWebPassword, hostWebDomain);


            KeywordQuery keywordQuery = new KeywordQuery(clientContext);
            var scope = "All Sites";
            keywordQuery.QueryText = String.Format("{0} AND Path:\"{1}\" AND Scope:\"{2}\" AND IsDocument:1", searchValue, hostWeb+"PropertyDocuments", scope);

            SearchExecutor searchExecutor = new SearchExecutor(clientContext);
            ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
            clientContext.ExecuteQuery();


            //foreach (SearchResults s in searchResults)
            foreach (var resultRow in results.Value[0].ResultRows)
            {

查看resultRow的结果 - 我找不到客户端ID或客户端名称的密钥。 有关如何按客户端ID过滤的任何建议? 感谢。

1 个答案:

答案 0 :(得分:0)

要获取其他字段供您在结果中进行过滤,您需要采取一些步骤。首先,确保您拥有一个托管属性,该托管属性映射到具有您的ID并且标记为“可检索”和“可查询”的已爬网属性。如果您不知道如何操作,请点击此链接Manage the Search Schema。更新或添加新的托管属性后,您必须运行完全爬网。您可以直接在查询中使用托管属性,但要在结果中实际返回它,您需要将其添加为要返回的附加字段。例如,假设您的托管属性名为 ClientID

int clientId = 5;
keywordQuery.QueryText = String.Format("{0} AND Path:\"{1}\" AND Scope:\"{2}\" AND ClientID:\"{3}\" AND IsDocument:1", searchValue, hostWeb+"PropertyDocuments", scope, clientId);
keywordQuery.SelectProperties.Add("ClientID");

您可以通过这种方式添加多个字段,以便在结果中返回以进行其他过滤或显示。