SharePoint 2013 Search: Ranked Result Blocks – The Definitive Answer
I’ve been stumped for a long time on how Ranked Result Blocks really work. When creating a Result Block, two options are presented: (1) This block is always shown above core results. (2) This block is ranked within core results (may not show). The first option is self-explanatory. The block will always show above the results, though it may display under another result block. The second options says the block will be ranked with the other search results, but how is it ranked?
The statement “This block is ranked within core results” is misleading and has caused many SharePoint Search Admins to incorrectly believe that somehow the block has received a relevancy-ranking score and is blended in with the search result items returned by the original query.
In my own personal experimentation, I noticed that if I created two result blocks, the last block created appeared in the first position and first block I created was in the fourth position. How could something be “ranked within core results” if the positioning was absolute?
I searched online for some sort of documentation, but I found no answer. I asked many of my search peers how result blocks were ranked; no one knew for sure; however, one lone opinion is that ranking is related to clicks. I finally found a lone reference in a Search Community forum supporting the assertion that the ranking is determined by clicks, so I tested the theory. I created two result blocks and clicked like mad on the “lower ranked” block, but I couldn’t make it move and was unable to validate the theory.
The question arose again recently with one of my customers. He had the same question: “Why do my Ranked Result Blocks always appear in the same positions?” I finally reached out to the Jedi Knight of all things search, Dan Pandre, and said, “Help! I’m trying to understand Ranked Result Blocks.” Dan said, “Try not. Do, or do not. There is no try. There is only source code.”
The Definitive Answer
After digging through the code, with some guidance from Dan, I finally arrived at what I believe is the definitive answer. Here are the facts:
- Ranked Result Blocks are ranked according to a "predicted click %" score.
- A newly created Ranked Result Block has a “predicted click %” of 0.811. This score will change over time according to the predictive click algorithm and the number of clicks within a Result Block (i.e., clicks on results in the block are registered with the block id).
- Clicks within the Result Block are recorded and then compiled on a 15-minute interval by the Query Logging timer job.
- When Result Blocks are triggered by a query and gathered for results, they are first sorted by greatest “predicted click %” score to smallest and then assigned to slots. A Ranked Result Block may appear in one of three slots (i.e., slots 0, 2 and 4) that are interleaved with the search results. Only one Result Block per slot is allowed.
- Search results may appear in slots 1, 3 and 5. Default settings place two search results, if available, in slots 1 and 3 and “the rest” in slot 5. The effect is two results between each Result Block.
- Each slot has a minimum threshold that the Ranked Result Block “predictive click %” score must exceed.
- To appear in Slot 0 (the top), a result block must have a “predictive click %” score greater than 0.5 (this is why a newly created block is always on top). In order to appear in Slot 2, a Result block must have a “predictive click %” score greater than 0.18. In order to appear in Slot 4, a Result Block must have a “predictive click %” score greater than 0.0. Again, only one Result Block is allowed per slot.
In summary, a Ranked Result Block is ranked by its “predictive click %” score relative to other Ranked Result Blocks scores. It will appear in one of three predetermined slots if the “predictive click %” score exceeds the Slot threshold.
Below is an example of a search results page with Ranked Result Blocks in slots 0, 2 and 4 and search results in slots 1, 3 and 5.