Understanding the Indexing and Search Pipelines
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.
- Adding Processors to Indexing and Search Pipelines
- Understanding the coveoIndexingGetFields and coveoIndexingGetTemplates Pipelines
- Excluding Items Without Layouts From Being Indexed
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 | |
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 |
|
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 Coveo.SearchProvider.Processors.FieldValueConverterProcessor
|
|
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 |
|
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 |
|
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 |
|
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 | |
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 |
|
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 Coveo.SearchProvider.Processors.Queries.AddBasicFieldsProcessor Coveo.SearchProvider.Processors.Queries.AddVirtualFieldsProcessor Coveo.SearchProvider.Processors.Queries.AddFieldsRelatedToSearchTypeProcessor
|
|
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. |
|
|
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.SearchProvider.InboundFilters.IndexLatestVersionInboundFilter
|
|
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.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.