Customizing search results in SharePoint 2013

SharePoint 2013

Learn how to group similar items or remove duplicate items in a search result set in SharePoint Server 2013 so you can display these results in a concise, readable way.

Last modified: July 11, 2013

Applies to: SharePoint Foundation 2013 | SharePoint Server 2013

In search results, grouping collapses two or more similar items in a search result set to make their display more readable for a user. Duplicate removal of search results is a part of grouping, where items that are identical or nearly identical are removed from the result set. Depending on the settings set by the SharePoint administrator, the user might be able to expand the search result set later and see the individual results that were collapsed.

The following are examples of ways to group search results:

  • Duplicate detection, where nearly identical documents are removed from the result set.

  • Site collapsing, where only the most relevant item found in each site is shown in the result set.

  • Document set collapsing, where only one hit is displayed for each document library in SharePoint.

You can specify the criteria for collapsing or duplicate trimming programmatically by using the following KeywordQuery properties within the Query object model:

The CollapseSpecification property takes a Spec parameter that can contain multiple fields separated either by a comma or a space, which evaluated together specify a set of criteria used for collapsing.

Syntax

CollapseSpecification = Spec

The following table lists the fields of the Spec parameter.

Table 1. Spec parameter fields

Element in parameter

Description

Spec

Subspec(<space>Subspec)*

Subspec

Prop(','Prop)*[':'Dups]

Prop

A valid managed property or an alias of a managed property. Prop is case-insensitive. The managed property must be queryable and either sortable or refineable.

Dups

An integer specifying the number of items to retain. The default value is 1.

<space>

Properties are combined by using the OR operator.

,

Properties are combined by using the AND operator.

*

Indicates more items.

() or []

Indicates optional items.

If the fields in Spec are separated by commas, the fields are combined by using the AND operator. If all of the specified fields are matched, the items are collapsed.

In contrast, if the fields in Spec are separated by spaces, the fields (or Subspecs) are combined by using an expansion that includes both the AND operator and OR operator. For example, an expression such as Category:3 Product:2 is internally transformed to the following expression (Category AND Product) OR (Category) with a counter for each; hence a maximum of two of the former and three of the latter. Items are collapsed if some of the specified fields are matched.

Examples of using CollapseSpecification

The following table shows a product catalog from the Contoso company. The next set of examples use this catalog to show how the CollapseSpecification property works.

Category

Product

Variant

Title

Laptops

WWI

19W X0196 Black

Computer 1

Laptops

Adventure Works

12 M1201 Red

Computer 2

Laptops

Adventure Works

15.4W M1548 White

Computer 3

Laptops

Proseware

19 X910 Black

Computer 4

Laptops

Proseware

Laptop19 X910 Black

Computer 5

Desktops

Adventure Works

2.33 XD233 Silver

Computer 6

Desktops

WWI

2.33 X2330 Black

Computer 7

Desktops

Adventure Works

1.60 ED160 White

Computer 8

Desktops

WWI

3.0 M0300 Silver

Computer 9

Example: group by Category

First, group the items based on Category and show the top two (hence "Category:2") for each group. Then, for each Category, show a corresponding number of unique (hence "Product:1") Products.

Syntax

CollapseSpecification="Category:2 Product:1"

This should return the following results.

Category

Product

Variant

Title

Laptops

WWI

19W X0196 Black

Computer 1

Laptops

Adventure

12 M1201 Red

Computer 2

Desktops

Adventure Works

2.33 XD233 Silver

Computer 6

Desktops

WWI

2.33 X2330 Black

Computer 7

Use the following code to collapse the search results by using the CollapseSpecification property.

using (var context = new ClientContext("http://localhost"))
{
    var query = new KeywordQuery(context)
        {
            QueryText = "Title:Computer",
            CollapseSpecification = "Category:3 Product:1",
        };

    var executor = new SearchExecutor(context);
    var results = executor.ExecuteQuery(query);

    context.ExecuteQuery();

    foreach (var result in results.Value[0].ResultRows)
    {
        Console.WriteLine(result["Title"]);
    }
}

Example: group by Category and Product

First, group the items based on both Category and Product. Then, show each unique combination.

Syntax

CollapseSpecification="Category,Product:1"

This should return the following results.

Category

Product

Variant

Title

Laptops

WWI

19W X0196 Black

Computer 1

Laptops

Adventure Works

12 M1201 Red

Computer 2

Laptops

Proseware

19 X910 Black

Computer 4

Desktops

Adventure Works

2.33 XD233 Silver

Computer 6

Desktops

WWI

2.33 X2330 Black

Computer 7

Use TrimDuplicates to specify whether to trim away the duplicate search results from the result set. TrimDuplicates is true by default.

If you use TrimDuplicates with either TrimDuplicatesOnProperty or preferably CollapseSpecification, TrimDuplicates is set to false.

Syntax

TrimDuplicates = <$true | $false>

Trim duplicate search results using the TrimDuplicatesOnProperty property

Use TrimDuplicatesOnProperty to specify whether to use a non-default managed property as the basis for duplicate trimming. The default value is the DocumentSignature managed property. The managed property must be of type Integer or String. By using a managed property that represents a grouping of items, you can use this feature for field collapsing.

Syntax

TrimDuplicatesOnProperty = <managed property>

Note Note

In SharePoint Server 2013, use CollapseSpecification wherever possible. TrimDuplicatesOnProperty is available for backward compatibility only.

Trim duplicate search results using the TrimDuplicatesKeepCount property

Use TrimDuplicatesKeepCount to specify the number of documents to retain when TrimDuplicates is true. If TrimDuplicates is based on a managed property that can be used as a group identifier, for example a site ID, you can control how many results are returned for each group. The items returned are those with the highest dynamic rank within each group.

Syntax

TrimDuplicatesKeepCount = <number>

Retrieve duplicate search results using the TrimDuplicatesIncludeId property

Use TrimDuplicatesIncludeId to retrieve the duplicates of a document when TrimDuplicates is true and TrimDuplicatesOnProperty or CollapseSpecification is set to false.

The document ID, docid, is used to retrieve the duplicates of a particular document.

Syntax

TrimDuplicatesIncludeId = <docid>

Note Note

The fcoid managed property in FAST Search Server 2010 for SharePoint has been replaced with the docid managed property in SharePoint Server 2013.

Show:
© 2014 Microsoft