SharePoint KeywordQuery - 如何排序

时间:2010-06-30 23:35:55

标签: sharepoint sharepoint-2010

我正在编写自定义搜索应用。目前使用KeywordQuery类。我可以得到很好的结果,但如果我尝试按自定义属性排序,它就会爆炸:

  

无法通过pid 400对一个或多个进行排序   原因如下:   多值:false,二进制:false,   non-indexed:true。

以下是代码。有谁发现了这个问题?如果按“排名”排序,它将正常工作,但如果我使用的是manged属性则不行。

   KeywordQuery query = new KeywordQuery(proxy);
    query.IgnoreAllNoiseQuery = false;
    query.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default;

    //Return following properties           
    query.SelectProperties.Add("Title");
    query.SelectProperties.Add("Path");
    query.SelectProperties.Add("SiteDescription");
    query.SelectProperties.Add("SiteKeywords"); //This is a multi-value so will have to be parsed
    query.SelectProperties.Add("SiteType");

    query.SelectProperties.Add("ContentClass");
    query.SelectProperties.Add("SiteName");

    //Query text (WHERE)
    query.QueryText = queryText;

    //Sort
    //Not sure what the criteria is here, but trying to sort by Title does not work.  ULS indicated it may need to be an indexed column?
    query.SortList.Add("Title", Microsoft.Office.Server.Search.Query.SortDirection.Descending);


    query.ResultTypes |= ResultType.RelevantResults;
    ResultTableCollection searchResults = query.Execute();

4 个答案:

答案 0 :(得分:3)

在抓取内容之前,必须将托管属性设置为“可排序”。您可以使用powershell进行设置。

答案 1 :(得分:1)

所以我一直试图按“标题”字段排序。我发现当我为title创建自己的托管属性时,排序有效,映射到与OOB Title相同的爬网属性,“通过使用哈希进行比较来降低文本属性的存储要求”。检查。

答案 2 :(得分:0)

如果它是托管属性,则需要选择“通过使用哈希进行比较来降低文本属性的存储要求”。检查。

答案 3 :(得分:0)

标准标题托管属性无法排序