Default Handlers & Pipes
This page aims to depict the default handlers and pipes found in the connector.
Handlers are the logical steps in indexing (both full and incremental indexing). A handler is given a command which it must execute. Some handlers, besides executing the command, have some internal sub-steps called pipes, which run in a specific order and help to fulfill the handler’s responsibility. Handlers together with their pipes compose an indexing chain. Think of the indexing chain as the logical flow when indexing content from your website:
Indexing chain
Handler 1
Handler 2
Pipe 2.1
Pipe 2.2
Handler 3
Pipe 3.1
…
…
- 1 1. Full Indexing Handlers
- 2 2. Incremental Indexing Handlers
- 2.1 Get Current Index Handler
- 2.2 Categories Incremental Indexing Handler
- 2.3 Categories Deletion Handler
- 2.4 Categories Cascade Indexing Handler
- 2.5 Entries Incremental Indexing Handler
- 2.6 Products Incremental Indexing Handler
- 2.7 Variants Incremental Indexing Handler
- 2.8 Bundles Incremental Indexing Handler
- 2.9 Packages Incremental Indexing Handler
- 2.10 Pages Incremental Indexing Handler
- 2.11 Entries Deletion Handler
- 2.12 Pages Deletion Handler
- 3 3. Common Handlers
1. Full Indexing Handlers
Delete Previous Index Handler
Class name: DeletePreviousIndexHandler
Base: IndexingHandlerBase
Description: Deletes the previous index from Hawksearch. This is executed only if there are already 2 indexes created in Hawksearch. It is needed because Hawksearch only allows for 2 indexes to exist at the same time.
Create Index Handler
Class name: CreateIndexHandler
Base: IndexingHandlerBase
Description: Creates a new Hawksearch index using the suffix specified in web.config (if any).
Categories Indexing Handler
Class name: CategoriesIndexingHandler<T> where T : NodeContent
Base: IndexingHandlerBase
Description: Indexes all categories from Optimizely’s catalogs.
Pipes:
Order | Pipe | Description |
---|---|---|
100 | CategoriesReaderPipe<T> | Traverses the catalog structure and loads all the categories |
200 | CategoriesTransformerPipe<T> | Transforms the traversed categories into Hierarchy objects which will be sent to Hawksearch |
300 | CategoriesRootPipe<T> | Sets the ParentHierarchyId to “1” for the top-most categories under the catalog root, as required by Hawksearch |
500 | CategoriesIndexingPipe<T> | Makes the necessary requests to the Hierarchy API in order to index the transformed categories |
Entries Indexing Handler
Class name: EntriesIndexingHandler<T> where T : EntryContentBase
Base: IndexingHandlerBase
Description: Indexes different type of entries after loading them in batches. Represented by an abstract class which ProductsIndexingHandler, VariantsIndexingHandler, BundlesIndexingHandler and PackagesIndexingHandler inherit from. The handler’s pipes are shared with its children types.
Pipes:
Order | Pipe | Description |
---|---|---|
200 | EntriesTransformerPipe<T> | Transforms the loaded entries into Item objects which will be sent to Hawksearch |
250 | EntriesDecoratedPropertiesPipe<T> | Further populates the Item objects with the properties decorated with [IncludeInHawksearch] attribute |
300 | EntriesCategoryPipe<T> | Sets the categories that the entries belong to on the Item objects |
600 | EntriesIndexingPipe<T> | Makes the necessary requests to the Indexing API in order to index the transformed items |
Products Indexing Handler
Class name: ProductsIndexingHandler<T> where T : ProductContent
Base: EntriesIndexingHandler<T> where T : EntryContentBase
Description: Indexes products. Generic type V must be of type VariationContent for pipes.
Pipes:
Order | Pipe | Description |
---|---|---|
250 | ProductVariantsPropertiesPipe<T,V> | OPTIONAL Pipe. Rolls up the attributes decorated with [IncludeInHawksearch] of the variants inside the parent product |
250 | ProductVariantsChildrenPipe<T, V> | OPTIONAL Pipe. Adds the attributes decorated with [IncludeInHawksearch] of the variants to the parent product’s hawk_child_attributes JSON property |
Variants Indexing Handler
Class name: VariantsIndexingHandler<T> where T : VariationContent
Base: EntriesIndexingHandler<T> where T : EntryContentBase
Description: Indexes variants. This is not available in the case of “Variant Attributes Roll Up” indexing strategy.
Pipes:
Order | Pipe | Description |
---|---|---|
400 | VariantPriceIndexingPipe<T> | OPTIONAL Pipe. Indexes the prices for variants |
500 | VariantInventoryIndexingPipe<T> | OPTIONAL Pipe. Indexes the inventories for variants |
Bundles Indexing Handler
Class name: BundlesIndexingHandler<T> where T : BundleContent
Base: EntriesIndexingHandler<T> where T : EntryContentBase
Description: Indexes bundles. Generic type V must be of type VariationContent for pipes.
Pipes:
Order | Pipe | Description |
---|---|---|
250 | BundleVariantsPropertiesPipe<T,V> | OPTIONAL Pipe. Rolls up the attributes decorated with [IncludeInHawksearch] of the variants inside the parent bundle |
250 | BundleVariantsChildrenPipe<T, V> | OPTIONAL Pipe. Adds the attributes decorated with [IncludeInHawksearch] of the variants to the parent bundle’s hawk_child_attributes JSON property |
Packages Indexing Handler
Class name: PackagesIndexingHandler<T> where T : PackageContent
Base: EntriesIndexingHandler<T> where T : EntryContentBase
Description: Indexes packages. Generic type V must be of type VariationContent for pipes.
Pipes:
Order | Pipe | Description |
---|---|---|
250 | PackageVariantsPropertiesPipe<T,V> | OPTIONAL Pipe. Rolls up the attributes decorated with [IncludeInHawksearch] of the variants inside the parent package |
250 | PackageVariantsChildrenPipe<T, V> | OPTIONAL Pipe. Adds the attributes decorated with [IncludeInHawksearch] of the variants to the parent package’s hawk_child_attributes JSON property |
400 | PackagePriceIndexingPipe<T> | OPTIONAL Pipe. Indexes the prices for packages |
500 | PackageInventoryIndexingPipe<T> | OPTIONAL Pipe. Indexes the inventories for packages |
Pages Indexing Handler
Class name: PagesIndexingHandler<T> where T : PageData
Base: IndexingHandlerBase
Description: Indexes CMS pages.
Pipes:
Order | Pipe | Description |
---|---|---|
200 | PagesTransformerPipe<T> | Transforms the loaded pages into Item objects which will be sent to Hawksearch |
300 | PagesDecoratedPropertiesPipe<T> | Further populates the Item objects with the properties decorated with [IncludeInHawksearch] attribute |
500 | PagesIndexingPipe<T> | Makes the necessary requests to the Indexing API in order to index the transformed items |
Set Current Index Handler
Class name: SetCurrentIndexHandler
Base: IndexingHandlerBase
Description: Sets the current Hawksearch index to the newly created one.
2. Incremental Indexing Handlers
Get Current Index Handler
Class name: GetCurrentIndexHandler
Base: IndexingHandlerBase
Description: Gets the current Hawksearch index.
Categories Incremental Indexing Handler
Class name: CategoriesIncrementalIndexingHandler<T> where T : NodeContent
Base: IndexingHandlerBase
Description: Indexes all the changed categories.
Pipes:
Order | Pipe | Description |
---|---|---|
100 | CategoriesIncrementalReaderPipe<T> | Reads from the IndexingQueue database table the changed categories |
200 | CategoriesTransformerPipe<T> | Transforms the changed categories into Hierarchy objects which will be sent to Hawksearch |
300 | CategoriesRootPipe<T> | Sets the ParentHierarchyId to “1” for the top-most categories under the catalog root, as required by Hawksearch |
500 | CategoriesIndexingPipe<T> | Makes the necessary requests to the Hierarchy API in order to index the transformed categories |
Categories Deletion Handler
Class name: CategoriesDeletionHandler
Base: IndexingHandlerBase
Description: Deletes from the index all the removed categories.
Pipes:
Order | Pipe | Description |
---|---|---|
100 | CategoriesDeletionReaderPipe | Reads from the IndexingQueue database table the removed categories which will be deleted from the index |
500 | CategoriesDeletionPipe | Makes the necessary delete requests to the Hierarchy API in order to delete the removed categories |
Categories Cascade Indexing Handler
Class name: CategoriesCascadeIndexingHandler
Base: IndexingHandlerBase
Description: It processes cascading events by adding events for all entities (product/variant/bundle/package) affected by the original cascading to the custom IndexingQueue table.
E.g., moving a category is originally saved in the IndexingQueue table as a cascading event of type “hierarchycascade“. In this step, the system adds events to the IndexingQueue table for all products / variants beneath that previously moved category.
Entries Incremental Indexing Handler
Class name: EntriesIncrementalIndexingHandler<T> where T : EntryContentBase
Base: IndexingHandlerBase
Description: Indexes different types of changed entries. Represented by an abstract class which ProductsIncrementalIndexingHandler, VariantsIncrementalIndexingHandler, BundlesIncrementalIndexingHandler and PackagesIncrementalIndexingHandler inherit from. The handler’s pipes are shared with its children types.
Pipes:
Order | Pipe | Description |
---|---|---|
200 | EntriesTransformerPipe<T> | Transforms the loaded entries into Item objects which will be sent to Hawksearch |
250 | EntriesDecoratedPropertiesPipe<T> | Further populates the Item objects with the properties decorated with [IncludeInHawksearch] attribute |
300 | EntriesCategoryPipe<T> | Sets the categories that the entries belong to on the Item objects |
600 | EntriesIndexingPipe<T> | Makes the necessary requests to the Indexing API in order to index the transformed items |
Products Incremental Indexing Handler
Class name: ProductsIncrementalIndexingHandler<T> where T : ProductContent
Base: EntriesIncrementalIndexingHandler<T> where T : EntryContentBase
Description: Indexes changed products. Generic type V must be of type VariationContent for pipes.
Pipes:
Order | Pipe | Description |
---|---|---|
250 | ProductVariantsPropertiesPipe<T,V> | OPTIONAL Pipe. Rolls up the attributes decorated with [IncludeInHawksearch] of the variants inside the parent product |
250 | ProductVariantsChildrenPipe<T, V> | OPTIONAL Pipe. Adds the attributes decorated with [IncludeInHawksearch] of the variants to the parent product’s hawk_child_attributes JSON property |
Variants Incremental Indexing Handler
Class name: VariantsIncrementalIndexingHandler<T> where T : VariationContent
Base: EntriesIncrementalIndexingHandler<T> where T : EntryContentBase
Description: Indexes changed variants. This is not available in the case of “Variant Attributes Roll Up” indexing strategy.
Pipes:
Order | Pipe | Description |
---|---|---|
400 | VariantPriceIndexingPipe<T> | OPTIONAL Pipe. Indexes the prices for variants |
500 | VariantInventoryIndexingPipe<T> | OPTIONAL Pipe. Indexes the inventories for variants |
Bundles Incremental Indexing Handler
Class name: BundlesIncrementalIndexingHandler<T> where T : BundleContent
Base: EntriesIncrementalIndexingHandler<T> where T : EntryContentBase
Description: Indexes changed bundles. Generic type V must be of type VariationContent for pipes.
Pipes:
Order | Pipe | Description |
---|---|---|
250 | BundleVariantsPropertiesPipe<T,V> | OPTIONAL Pipe. Rolls up the attributes decorated with [IncludeInHawksearch] of the variants inside the parent bundle |
250 | BundleVariantsChildrenPipe<T, V> | OPTIONAL Pipe. Adds the attributes decorated with [IncludeInHawksearch] of the variants to the parent bundle’s hawk_child_attributes JSON property |
Packages Incremental Indexing Handler
Class name: PackagesIncrementalIndexingHandler<T> where T : PackageContent
Base: EntriesIncrementalIndexingHandler<T> where T : EntryContentBase
Description: Indexes changed packages. Generic type V must be of type VariationContent for pipes.
Pipes:
Order | Pipe | Description |
---|---|---|
250 | PackageVariantsPropertiesPipe<T,V> | OPTIONAL Pipe. Rolls up the attributes decorated with [IncludeInHawksearch] of the variants inside the parent package |
250 | PackageVariantsChildrenPipe<T, V> | OPTIONAL Pipe. Adds the attributes decorated with [IncludeInHawksearch] of the variants to the parent package’s hawk_child_attributes JSON property |
400 | PackagePriceIndexingPipe<T> | OPTIONAL Pipe. Indexes the prices for packages |
500 | PackageInventoryIndexingPipe<T> | OPTIONAL Pipe. Indexes the inventories for packages |
Pages Incremental Indexing Handler
Class name: PagesIncrementalIndexingHandler<T> where T : PageData
Base: IndexingHandlerBase
Description: Indexes changed pages.
Pipes:
Order | Pipe | Description |
---|---|---|
200 | PagesTransformerPipe<T> | Transforms the loaded pages into Item objects which will be sent to Hawksearch |
300 | PagesDecoratedPropertiesPipe<T> | Further populates the Item objects with the properties decorated with [IncludeInHawksearch] attribute |
500 | PagesIndexingPipe<T> | Makes the necessary requests to the Indexing API in order to index the transformed items |
Entries Deletion Handler
Class name: EntriesDeletionHandler
Base: IndexingHandlerBase
Description: Deletes from the index all the removed entries.
Pipes:
Order | Pipe | Description |
---|---|---|
600 | EntriesDeletionPipe | Makes the necessary delete requests to the Indexing API in order to delete the removed entries |
Pages Deletion Handler
Class name: PagesDeletionHandler
Base: IndexingHandlerBase
Description: Deletes from the index all the removed pages.
Pipes:
Order | Pipe | Description |
---|---|---|
500 | PagesDeletionPipe | Makes the necessary requests to the Indexing API in order to delete the removed pages |
3. Common Handlers
Handlers used both for full and incremental indexing
Hierarchy Rebuild Handler
Class name: HierarchyRebuildHandler
Base: IndexingHandlerBase
Description: Rebuilds the Hawksearch hierarchy after organizing the categories.
Rebuild Index Handler
Class name: RebuildIndexHandler
Base: IndexingHandlerBase
Description: Rebuilds the Hawksearch index after adding items.