【问题标题】:SharePoint KeywordQuery - how to sortSharePoint KeywordQuery - 如何排序
【发布时间】:2019-06-18 16:46:11
【问题描述】:

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

无法按 pid 400 对一项或多项进行排序 出于以下原因: 多值:假,二进制:假, 非索引:true。

以下是代码。有人发现问题吗?如果我按“排名”排序,它会正常工作,但如果我使用管理属性,则不会。

   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();

【问题讨论】:

    标签: sharepoint sharepoint-2010


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      所以我一直在尝试按“标题”字段进行排序。当我为标题创建自己的托管属性时,我发现排序工作,映射到与 OOB 标题相同的爬网属性,“通过使用散列进行比较来减少文本属性的存储要求”。检查。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          标准标题托管属性不可排序

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-24
            相关资源
            最近更新 更多