首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在2010 for Sharepoint中,如何将细化结果限制提高到100以上。

在2010 for Sharepoint中,如何将细化结果限制提高到100以上。
EN

Stack Overflow用户
提问于 2015-12-03 22:39:17
回答 2查看 376关注 0票数 6

在快速搜索查询中,我想得到适用于搜索术语的所有改进。目前我只得到100个结果。我想知道是否有超过100个细化结果的设置,我必须在我的查询中传递这些结果。

下面是查询的Refiners部分:

代码语言:javascript
复制
<IncludeRefinementResults><Refiners><Refiner>*PROPERTY NAME*</Refiner></Refiners></IncludeRefinementResults>

我已经研究了深浅炼油(https://technet.microsoft.com/en-us/library/gg193929(v=office.14).aspx,它处理基于所有结果和精细化的所有结果,基于前100的结果,而不处理正在返回的细化结果的实际数量。

如果有人能向我指出微软的文档,指出100是硬限制,或者引导我找到我所缺少的过滤器,那就太好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-10 19:13:04

在这个论坛线中,它建议修改细化器参数"filter“应该允许超过100个结果。

添加托管属性(通过Sharepoint UI),并将其标记为“细化器属性”,并标记为“深度细化器”。

通过使用细化器参数"filter“,您可以使用该参数获得100多个细化器。

您需要设置这个参数以及您的细化器属性。

作者(filter=500)

票数 3
EN

Stack Overflow用户

发布于 2016-08-08 13:48:33

经过大量的搜索,我找到了一个有答案的博客帖子。简而言之,在GetRefinableManagedPropertyInfos类中的Microsoft.Office.Server.Search.RefinementUtilities.ManagedPropertyInfoProvider方法中,该值是硬编码的.下面是一个很长的代码片段,但请注意对GetValuesForRefinableProperties方法的调用,该方法的值为100,硬编码为maxItems变量。我使用Reflector生成以下内容:

代码语言:javascript
复制
public IEnumerable<RefinableManagedPropertyInfo> GetRefinableManagedPropertyInfos(SiteCollectionReference siteCollectionReference, double percentageThreshold = 0.8, TermReference? termReference = new TermReference?())
{
    using (new SPMonitoredScope("ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos"))
    {
        long num;
        IEnumerable<Refinement> enumerable3;
        IEnumerable<RefinerData> enumerable6;
        IEnumerable<ManagedPropertyInfo> refinablePropertiesInSchema = this.GetAllRefinableProperties(siteCollectionReference).ToList<ManagedPropertyInfo>();
        if (!termReference.HasValue)
        {
            ULS.SendTraceTag(0x153103, ULSCat.msoulscat_SEARCH_Admin, ULSTraceLevel.High, "ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos: Schema info only requested. Returning.", new object[] { "ManagedProperties" });
            return CreateRefinableManagedPropertyInfoList(refinablePropertiesInSchema);
        }
        IEnumerable<string> source = (from r in refinablePropertiesInSchema select r.Name).ToList<string>();
        if (!source.Contains<string>("ManagedProperties", StringComparer.OrdinalIgnoreCase))
        {
            ULS.SendTraceTag(0x153104, ULSCat.msoulscat_SEARCH_Admin, ULSTraceLevel.High, "ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos: Can not find managed property {0} in schema. Returning only refinable properties from schema.", new object[] { "ManagedProperties" });
            return CreateRefinableManagedPropertyInfoList(refinablePropertiesInSchema);
        }
        try
        {
            enumerable3 = this.GetValuesForRefinableProperty(siteCollectionReference, "ManagedProperties", termReference.Value, 0x7fffffff, out num).ToList<Refinement>();
        }
        catch (QueryFailedException exception)
        {
            exception.RefinablePropertiesFromSchema = CreateRefinableManagedPropertyInfoList(refinablePropertiesInSchema);
            throw;
        }
        if (num == 0L)
        {
            ULS.SendTraceTag(0x153105, ULSCat.msoulscat_SEARCH_Admin, ULSTraceLevel.High, "ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos: Query returned 0 results. Returning only refinable properties from schema.");
            return CreateRefinableManagedPropertyInfoList(refinablePropertiesInSchema);
        }
        ULS.SendTraceTag(0x153106, ULSCat.msoulscat_SEARCH_Admin, ULSTraceLevel.Verbose, "ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos: Found {0} refinable properties with index values.", new object[] { enumerable3.Count<Refinement>() });
        long threshold = (long) Math.Round((double) (num * percentageThreshold));
        IEnumerable<string> enumerable4 = (from r in enumerable3
            where r.RefinementCount >= threshold
            select r.RefinementName).ToList<string>();
        ULS.SendTraceTag(0x153107, ULSCat.msoulscat_SEARCH_Admin, ULSTraceLevel.Verbose, "ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos: Found {0} managed properties with values above threshold {1}", new object[] { enumerable4.Count<string>(), threshold });
        IEnumerable<string> enumerable5 = source.Intersect<string>(enumerable4, StringComparer.OrdinalIgnoreCase).ToList<string>();
        ULS.SendTraceTag(0x153108, ULSCat.msoulscat_SEARCH_Admin, ULSTraceLevel.Verbose, "ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos: Want to find entropy for {0} managed properties.", new object[] { enumerable5.Count<string>() });
        try
        {
            enumerable6 = this.GetValuesForRefinableProperties(siteCollectionReference, enumerable5, termReference.Value, 100, out num).ToList<RefinerData>();
        }
        catch (QueryFailedException exception2)
        {
            exception2.RefinablePropertiesFromSchema = CreateRefinableManagedPropertyInfoList(refinablePropertiesInSchema);
            throw;
        }
        ULS.SendTraceTag(0x153109, ULSCat.msoulscat_SEARCH_Admin, ULSTraceLevel.Verbose, "ManagedPropertyInfoProvider::GetRefinableManagedPropertyInfos: Total hits in entropy query = {0} Number of refiners returned = {1}", new object[] { num, enumerable6.Count<RefinerData>() });
        return CreateRefinableManagedPropertyInfoList((from r in enumerable6
            where r.Entropy > 0M
            select r).ToDictionary<RefinerData, string, RefinerData>(suggestedRefiner => suggestedRefiner.RefinerName, r => r, StringComparer.OrdinalIgnoreCase), num, enumerable3, refinablePropertiesInSchema);
    }
}

我还没有通过反编译、更改值和重新编译来验证这一点,但是除非Microsoft提供了修补程序,否则100似乎是一个很难的限制。上面的解压缩代码是截至2013年SharePoint的最新版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34077599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档