我想搜索 SharePoint 中具有特定标题的文档库的所有子文件夹。我正在使用 service.asmx 网络服务。
不知何故它不起作用。我没有得到任何结果,也不知道如何解决这个问题。
我的代码如下所示:
var service = new SharePointSearchService1.QueryService();
service.PreAuthenticate = true;
service.Credentials = CredentialCache.DefaultNetworkCredentials;
var queryXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
queryXml += "<QueryPacket xmlns=\"urn:Microsoft.Search.Query\">";
queryXml += "<Query>";
queryXml += "<SupportedFormats>";
queryXml += "<Format>urn:Microsoft.Search.Response.Folder:Folder</Format>";
queryXml += "</SupportedFormats>";
queryXml += "<Context>";
queryXml += "<QueryText language=\"de-DE\" type=\"MSSQLFT\">SELECT Size, Rank, Path, Title, Description, Write FROM scope() WHERE CONTAINS(Path, '\"http://sharepoint/area/test/Test Projects/*\"') </QueryText>";
queryXml += "</Context>";
queryXml += "<Range>";
queryXml += "<StartAt>1</StartAt>";
queryXml += "<Count>5000</Count>";
queryXml += "</Range>";
queryXml += "</Query>";
queryXml += "</QueryPacket>";
var result = service.Query(queryXml);
上面的代码不起作用。我期望的是获取位于文档库(测试项目)内的所有项目(如文件夹)。
我可以使用以下查询搜索项目:
queryXml += "<QueryText language=\"de-DE\" type=\"MSSQLFT\">SELECT Size, Rank, Path, Title, Description, Write FROM scope() WHERE CONTAINS(Title, '\"AA*\"') </QueryText>";
但这会返回整个站点的结果。我只想拥有文档库和该库的子文件夹中的项目。
我也尝试使用“like”谓词,但这也没有返回任何东西。
有人知道我做错了什么吗?