2010-04-05 46 views
0

我们创建了一个ASP.NET Web应用程序,可将文件上载到WSS Doc Libary。这些文件被添加到库中的“SYSTEM ACCOUNT”下。 FullTextSqlQuery类用于搜索文档库项目。但它只搜索由'管理员'等windows用户帐户上传的文件,并忽略'SYSTEM帐户'上传的文件。因此,即使我们在文档库中有必要的数据,搜索结果也是空的。这可能是什么原因? 的代码如下:Windows Sharepoint Services - FullTextSqlQuery文档库无法找到通过SYSTEM ACCOUNT创建的项目

公共静态列表GetListItemsFromFTSQuery(串SEARCHTEXT) { 串docLibUrl = “http://localhost:6666/Articles%20Library/Forms/AllItems.aspx”; List items = new List(); DataTable retResults = new DataTable();

 SPSecurity.RunWithElevatedPrivileges(delegate 
               { 
                using (SPSite site = new SPSite(docLibUrl)) 
                { 
                 SPWeb CRsite = site.OpenWeb(); 
                 SPList ContRep = CRsite.GetListFromUrl(docLibUrl); 

                 FullTextSqlQuery fts = new FullTextSqlQuery(site); 
                 fts.QueryText = 
                  "SELECT Title,ContentType,Path FROM portal..scope() WHERE freetext('" + 
                  searchText + 
                  "') AND (CONTAINS(Path,'\"" + 
                  ContRep.RootFolder.ServerRelativeUrl + "\"'))"; 
                 fts.ResultTypes = ResultType.RelevantResults; 
                 fts.RowLimit = 300; 
                 if (SPSecurity.AuthenticationMode != System.Web.Configuration.AuthenticationMode.Windows) 

                  fts.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery; 

                 else 

                  fts.AuthenticationType = QueryAuthenticationType.NtAuthenticatedQuery; 


                 ResultTableCollection rtc = fts.Execute(); 
                 if (rtc.Count > 0) 
                 { 

                  using (
                   ResultTable relevantResults = 
                    rtc[ResultType.RelevantResults]) 
                   retResults.Load(relevantResults, 
                       LoadOption.OverwriteChanges); 

                  foreach (DataRow row in retResults.Rows) 
                  { 
                   if (!row["Path"].ToString().EndsWith(".aspx")) 
                    //if (row["ContentType"].ToString() == "Item") 
                   { 
                    using (
                     SPSite lookupSite = 
                      new SPSite(row["Path"].ToString())) 
                    { 
                     using (SPWeb web = lookupSite.OpenWeb()) 
                     { 
                      SPFile file = 
                       web.GetFile(row["Path"].ToString()); 
                      items.Add(file.Item); 

                     } 
                    } 
                   } 
                  } 

                 } 

                } //using ends here 
               }); 
     return items; 
    } 

回答

0

尝试在你的查询修改自由文本条款是:

... FREETEXT(*, ' “+ SEARCHTEXT +”' ....

相关问题