Службы Windows Sharepoint Services - библиотека документов FullTextSqlQuery Невозможно найти элементы, созданные SYSTEM ACCOUNT - PullRequest
0 голосов
/ 05 апреля 2010

Мы создали веб-приложение ASP.NET, которое загружает файлы в WSS Doc Libary. Файлы добавляются в «SYSTEM ACCOUNT» в библиотеке. Класс FullTextSqlQuery используется для поиска элементов библиотеки. Но он только ищет файлы, которые были загружены с помощью учетной записи пользователя Windows, например «Администратор», и игнорирует файлы, загруженные «СЧЕТ СИСТЕМЫ». В результате результаты поиска пусты, хотя у нас есть необходимые данные в библиотеке документов. Что может быть причиной этого? Код приведен ниже:

публичный статический список GetListItemsFromFTSQuery (строка searchText) { строка docLibUrl = "http://localhost:6666/Articles%20Library/Forms/AllItems.aspx"; Элементы списка = новый список (); 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;
    }

1 Ответ

0 голосов
/ 30 апреля 2010

Попробуйте изменить предложение freetext в вашем запросе так:

... freetext (*, '"+ searchText +"' ....

...