在SharePoint 2013中使用C#访问Search API时出错:您的搜索无法完成,因为没有可用的搜索服务

时间:2014-05-21 01:31:35

标签: c# search sharepoint-2013

我正在使用服务器端对象模型来尝试调用搜索服务(用于查询搜索索引)。代码如下所示:

using (SPSite siteCollection = new SPSite(http://ValidSharePointSite))
                {
                    KeywordQuery keywordQuery = new KeywordQuery(siteCollection);
                    keywordQuery.QueryText = "search text";
                    SearchExecutor searchExecutor = new SearchExecutor();
                    ResultTableCollection resultTableCollection = searchExecutor.ExecuteQuery(keywordQuery);
                    resultTableCollection.Filter("Pages", KnownTableTypes.RelevantResults);
                    ResultTable resultTable = resultTableCollection.FirstOrDefault();
                    DataTable dataTable = resultTable.Table;
            }

当它到达创建KeywordQuery对象的行时,会引发以下错误:由于没有可用的搜索服务,因此无法完成搜索

我已经尝试了两个不同的SharePoint服务器/环境上的代码,并且会出现同样的问题。日志中有一些关于无法找到HostController服务的其他信息。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

这是解决方案: http://coder87.wordpress.com/2013/03/27/keywordquery-doesnt-work-or-confusion-between-search-namespaces/#comment-484

必须使用 Microsoft.Office.Server.Search.Query 而不是 Microsoft.SharePoint.Search.Query ;

答案 1 :(得分:0)

确保您的搜索服务已启动且未指定错误。此外,通过浏览器中的搜索REST API,您可以验证搜索是否正常工作