Использование API поиска с Sharepoint Foundation 2010 - 0 результатов - PullRequest
2 голосов
/ 12 апреля 2010

Я новичок на sharepoint, и у меня возникают проблемы с возвратом результатов поиска с помощью API поиска в Sharepoint 2010 Foundation.

Вот шаги, которые я предпринял до сих пор.

  1. Служба Sharepoint Foundation Search v4 запущена и вошла в систему как локальная служба
  2. В разделе «Сайт группы» - «Настройки сайта» - «Поиск и автономная доступность» включено индексирование содержимого сайта.
  3. Запуск сценария PowerShell Get-SPSearchServiceInstance возвращает

TypeName: SharePoint Foundation Search
Описание: индексный файл поиска на поисковом сервере
Id: 91e01ce1-016e-44e0-a938-035d37613b70
Сервер: SPServer Name = V-SP2010
Служба: SPSearchService Name = SPSearch4
IndexLocation: C: \ Program Files \ Common Files \ Microsoft Shared \ Веб-сервер Exten сий \ 14 \ Data \ Applications
ProxyType: по умолчанию
Статус: Онлайн

  1. Когда я выполняю поиск с использованием текстового поля поиска на сайте группы, я получаю результаты, как и ожидалось.

Теперь, когда я пытаюсь дублировать результаты поиска с помощью API поиска, я либо получаю сообщение об ошибке, либо 0 результатов.

Вот пример кода:

using Microsoft.SharePoint.Search.Query;
using (var site = new SPSite(_sharepointUrl, token))
{
    // 
    FullTextSqlQuery fullTextSqlQuery = new FullTextSqlQuery(site)
    {
        QueryText = String.Format("SELECT Title, SiteName, Path FROM Scope() WHERE \"scope\"='All Sites' AND CONTAINS('\"{0}\"')", searchPhrase),
        //QueryText = String.Format("SELECT Title, SiteName, Path FROM Scope()", searchPhrase),
        TrimDuplicates = true,
        StartRow = 0,
        RowLimit = 200,
        ResultTypes = ResultType.RelevantResults
        //IgnoreAllNoiseQuery = false
    };

    ResultTableCollection resultTableCollection = fullTextSqlQuery.Execute();
    ResultTable result = resultTableCollection[ResultType.RelevantResults];

    DataTable tbl = new DataTable();
    tbl.Load(result, LoadOption.OverwriteChanges);
}

Когда для области задано значение Все сайты, я получаю сообщение об ошибке, что область поиска недоступна. Другой поиск просто вернет 0 результатов.

Есть идеи о том, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Я также никогда не получал результаты, используя FullTextSqlQuery в Foundation Search, но, возможно, вы можете использовать KeywordQuery:

        SPSite thisSite = SPControl.GetContextSite(Context);
        Microsoft.SharePoint.Search.Query.KeywordQuery kwQuery = new Microsoft.SharePoint.Search.Query.KeywordQuery(thisSite);
        kwQuery.RowLimit = 1000;
        kwQuery.QueryText = "searchString";         
        kwQuery.HiddenConstraints = "site:\"http://devXX:800/test/docs\"";
        kwQuery.ResultTypes = ResultType.RelevantResults;
        ResultTableCollection results = kwQuery.Execute();
        ResultTable relevantResults = results[ResultType.RelevantResults];            
        dt.Load(relevantResults, LoadOption.OverwriteChanges);
0 голосов
/ 05 мая 2010

Это обходной путь, к которому мы пришли.

  1. Мы не запустили поиск фундамента, как мы надеялись. Мы рассмотрим его снова, как только будет выпущена RTM-версия Sharepoint Foundation.

  2. Мы установили бета-версию Search Server Express 2010. Это позволило нам использовать пространства имен офисного сервера и соответствующие классы. Это сработало, как и ожидалось, и мы смогли программно выполнить поиск по Sharepoint Foundation.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...