我们创建了一个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;
}