我想搜索SharePoint中具有特定标题的文档库的所有子文件夹。我正在使用service.asmx Web服务。
不知怎的,它不起作用。我没有得到任何结果,也不知道如何解决问题。
我的代码如下:
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>";
但这会返回整个网站的结果。我只想拥有文档库和此库的子文件夹中的项目。
我也尝试使用“喜欢”谓词,但也没有返回任何内容。
有人知道我做错了吗?