---
title: "The Sitecore.Commerce.Plugin.Search.AbstractIndexFieldHandler class"
slug: "the-sitecore-commerce-plugin-search-abstractindexfieldhandler-class"
abstract: "A detailed description of the Sitecore.Commerce.Plugin.Search.AbstractIndexFieldHandler class."
---
# The Sitecore.Commerce.Plugin.Search.AbstractIndexFieldHandler class

The `Sitecore.Commerce.Plugin.Search.AbstractIndexFieldHandler` class defines the [search field handlers](https://doc.sitecore.com/xp/en/developers/101/sitecore-experience-commerce/search-field-handlers.html "Search field handlers") that the Commerce Engine provides out of the box.

```csharp
using System.Collections.Concurrent;

namespace Sitecore.Commerce.Plugin.Search
{
    /// <summary>
    /// Defines the abstract index field handler.
    /// </summary>
    public abstract class AbstractIndexFieldHandler
    {
        /// <summary>
        /// Composes the field value to be used in the index
        /// </summary>
        /// <param name="source">The source for the value</param>
        /// <param name="context">The context</param>
        /// <returns>The value of the field to be use in the index</returns>
        public abstract object ComposeValue(object source, ConcurrentDictionary<string, object> context);
    }
}

```

The `Sitecore.Commerce.Plugin.Search.AbstractIndexFieldHandler` class calls a synchronous `ComposeValue` method to compose the value to index.

- The `source` argument in the `ComposeValue` provides access to the entity that is being processed.
- The `context` dictionary provides further information about the hierarchical location of the entity, the language, the catalog that it belongs to, the current language, and more. The following table shows keys and a description of the values:

    | Key | Value |
    | --- | --- |
    | `CommerceContext` | The commerce context to provide information about the current environment. |
    | `SitecoreItemSearchScopePolicy` | The search scope policy provides information about the target index. |
    | `LanguageCode` | The language code. |
    | `Parent` | The ID of the immediate parent entity. |
    | `MappedCatalog` | Provides high-level information about the catalog that this entity belongs to. |
    | `EntityHierarchy` | Hierarchical information about the item. Provides access to the entire path to the given item. |
    | `IndexingOptions` | Information about the current indexing operation. Provides access to the target database name. |
    | `DeterministicId` | The unique ID for the entity that is also used as the Sitecore Item ID in the data provider. |