Understanding the Indexing and Search Pipelines

The indexing and search pipelines allow you to:

  • Modify how Sitecore items are indexed in your search indexes.
  • Modify which and how search results are returned.

Among all pipelines included in Coveo for Sitecore, they’re the most commonly customized ones. You can find them in the /configuration/sitecore/pipelines section of the Coveo.SearchProvider.Custom.config file.

There are also code samples showing you how to implement your own custom processors for the most commonly customized pipelines. You can also download the complete Visual Studio 2013 solution.

Overview of Pipelines

Pipeline Purpose Description Processors included by default Is typically customized?
coveoItemProcessingPipeline Item pre-processing Used to pre-process Sitecore items, allowing you to reject them, create entirely new virtual items based on them, or fetch associated items (see the RelatedItemPreProcessor code sample below). Input and output items are of type Sitecore.ContentSearch.IIndexable. Received items have not been processed by the Coveo Search Provider yet. None check
coveoPostItemProcessingPipeline Item post-processing Used to post-process Sitecore items, allowing you to perform various customizations (see the TranslatedItemPostProcessor code sample below). Processors added to this pipeline have access to the original IIndexableItem object, as well as to the pre-processed item, and therefore to all fields added by the Coveo Search Provider. Input and output items are of type Coveo.AbstractLayer.RepositoryItem.CoveoIndexableItem. Coveo.SearchProvider.Processors.AddCoveoVersionTag check
coveoFieldConverterPipeline Field processing Used to filter out unnecessary fields and format the remaining ones in a format recognized by the Coveo index (as specified in the fieldMap section of the Coveo Search Provider configuration). Coveo.SearchProvider.Processors.SkipMetadataNamesProcessor
contentSearch.getContextIndex Context utilities Used to determine the name of the search index corresponding to the currently selected Sitecore item or database. Coveo.SearchProvider.Processors.FetchCoveoIndex x
coveoFieldNameTranslatorPipeline Field processing Used to  translate a Sitecore field name to its equivalent name in the Coveo index (for example, Title becomes @ftitle87624, where '87624' is a hash value computed from the name of the Coveo source corresponding to the current search index). Coveo.AbstractLayer.Pipeline.CoveoFieldNameTranslatorProcessor x
coveoAutomaticBoostingPipeline Analytics-based ranking Used to automatically adjust the ranking of search results based on the browsing history of the current user, which is stored in the Sitecore Analytics database. Coveo.SearchProvider.Processors.AutomaticBoostingProcessor x
coveoBeforeUpdateFieldSetPipeline Fields set pre-processing Used to pre-process Sitecore fields before they're added to their corresponding fields set in the Coveo index (see the BeforeUpdateFieldSetProcessor code sample below). This allows you to programmatically make fields facetable, sortable, or multi-values, as you can do via the fieldMap section of the Coveo Search Provider configuration. None check

Coveo for Sitecore 4.1 (Nov. 2018)


LINQ result processing Used to influence how the LINQ search results are mapped from the generic type to the target collection type. This allows you to programmatically map data from the Coveo search result to the target .NET object that's returned by the LINQ query. Coveo.SearchProvider.Processors.Queries.MapCoveoMetadataProcessor x

Coveo for Sitecore 4.1 (Nov. 2018)


LINQ field processing Used to include or exclude which fields should be returned in LINQ query results. Coveo.SearchProvider.Processors.Queries.AddAllFieldsProcessor
coveoInboundFilterPipeline Item filtering Used to define inbound filter processors. Inbound filters are used to filter out items from your search indexes based on some condition. Unlike the indexing.filterIndex.inbound pipeline, this pipeline only applies to Coveo indexes.


Coveo for Sitecore (December 2016)


indexing.filterIndex.inbound Item filtering Used to define inbound filter processors. Inbound filters are used to filter out items from your search indexes based on some condition (see the ExcludeStandardValuesItemsProcessor code sample below). Be aware that processors added to this pipeline may conflict with those defined in the same pipeline in the Sitecore.ContentSearch.config file, so you may need to remove or comment them out. This pipeline requires the ApplySitecoreInboundFilterProcessor processor to be defined in coveoInboundFilterPipeline in order to be applied to Coveo indexes. Coveo.SearchProvider.InboundFilters.ItemPathInboundFilter

Coveo for Sitecore (June 2016)


User identity management Used to manually set additional user identities, so that more results can be obtained when querying.



Coveo for Sitecore (December 2016) Coveo.SearchProvider.Rest.Processors.GetSearchUserIdentities.AddEveryoneRoleWhenNoIdentities

What’s Next?

To learn how to add processors to your pipelines, see Adding Processors to Indexing and Search Pipelines.