2013-03-19 11 views
0

Я создал некоторые управляемые свойства в соответствии с инструкциями по адресу http://technet.microsoft.com/en-us/library/ff621097(v=office.14).aspx. Затем я создал страницу пользовательского приложения SharePoint с помощью поиска KeywordQuery найти только те документы, используя следующий код:SharePoint 2010 KeywordQuery Возвращает пустые управляемые свойства

using System; 
using System.Collections.Generic; 
using System.Data; 
using Microsoft.Office.Server.Search.Query; 
using Microsoft.SharePoint.WebControls; 

protected System.Data.DataTable TrySearch(string keywords, Int32 pageSize, Int32 page, out Int32 totalPages) 
{ 

    int startRow = (page - 1)*rowLimit; 

    var kwq = new KeywordQuery(Site); 
    kwq.QueryText = string.Format("Title:\"{0}\"", keywords); 
    kwq.ResultTypes = ResultType.RelevantResults; 
    kwq.RowLimit = pageSize; 
    kwq.StartRow = startRow; 
    kwq.TrimDuplicates = true; 
    kwq.HiddenConstraints = "path:\"*/User Docs*\" AND IsDocument:true"; 
    kwq.KeywordInclusion = KeywordInclusion.AllKeywords; 

    // Default 
    kwq.SelectProperties.Add("WorkId"); 
    kwq.SelectProperties.Add("Rank"); 
    kwq.SelectProperties.Add("Title"); 
    kwq.SelectProperties.Add("Path"); 
    kwq.SelectProperties.Add("SiteName"); 
    kwq.SelectProperties.Add("HitHighlightedSummary"); 
    kwq.SelectProperties.Add("HitHighlightedProperties"); 
    kwq.SelectProperties.Add("ContentClass"); 
    kwq.SelectProperties.Add("IsDocument"); 

    // Custom (they come back blank even when set as managed properties) 
    kwq.SelectProperties.Add("IntroText"); 
    kwq.SelectProperties.Add("Date"); 
    kwq.SelectProperties.Add("ListItemId");   

    ResultTableCollection rtc = kwq.Execute(); 

    var results = new DataTable(); 

    if (rtc.Count == 0) 
    { 
     totalPages = 0; 
     return results; 
    } 

    using (ResultTable relevantResults = rtc[ResultType.RelevantResults]) 
    { 
     results.Load(relevantResults, LoadOption.OverwriteChanges); 
     totalPages = (int) Math.Round((double) relevantResults.TotalRows/pageSize); 
    } 

    return results; 
} 

Моя проблема в том, что не то, что я делаю, я не могу получить значения обратно для моих управляемых свойств. Поиск работает отлично. Я могу соответствующим образом фильтровать и получать ожидаемые результаты, просто пользовательские столбцы пустые. Меня больше всего интересует идентификатор, но мне бы хотелось получить все пользовательские свойства, о которых я просил.

Может ли быть какая-то настройка, которую я пропустил на сервере? Любая помощь приветствуется.

ответ

0

Я полагаю, вы должны достичь решения в настоящее время, но и для тех, кто борется с той же проблемой является решением:

После картирования свойств для обхода существующих/новых управляемых свойств, ползать снова. Вот и все. Данные будут отображаться для запрашиваемых свойств.

+0

Честно говоря, я так и не нашел решение. Я не работал над этим проектом за какое-то время, но я уверен, что попробовал бы ползать. Если проект вернется к моему пути, я вернусь к этому. Благодаря! –