In FAST Search Server 2010 for Sharepoint, how to increase the limit of refinement results to more than 100.

In the FAST search query, I want to get all the refinements that apply to the search query. Currently, I get only 100 results. I want to know if there is a parameter to get more than 100 refinement results that I have to pass in my request.

Here is a snippet of Refiners request:

<IncludeRefinementResults><Refiners><Refiner>*PROPERTY NAME*</Refiner></Refiners></IncludeRefinementResults> 

I have already studied Deep vs Small Refiners ( https://technet.microsoft.com/en-us/library/gg193929(v=office.14).aspx ), which deals with refinements based on all results and refinements based on only on 100 results and do not process the actual number for returned refinement results.

It would be great if someone could point me to the Microsoft documentation, indicating that 100 is a hard limit or direct me to a filter that I am missing.

+6
source share
2 answers

Found this forum where he suggests that changing the refiner "filter" parameter should allow more than 100 results.

Add a managed property (Via Sharepoint UI) and mark it as a Refiner property, and also mark "Deep Refiner".

With the refiner parameter "filter" you can get more than 100 refiners with this parameter.

You need to set this parameter along with your refiner property, for example.

author (filter = 500)

+3
source

After a ton of search, I found a blog post with the answer. In short, the value is hardcoded in the GetRefinableManagedPropertyInfos method in the Microsoft.Office.Server.Search.RefinementUtilities.ManagedPropertyInfoProvider class. The following is a long snippet of code, but pay attention to calling the GetValuesForRefinableProperties method with a value of 100 , hard-coded in the variable maxItems . I used Reflector to create the following:

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

I did not confirm this by decompiling, changing the value and recompiling, but if Microsoft does not provide the fix, 100 seems to be a hard limit. The decompiled code above is current from SharePoint 2013.

+1
source

All Articles