Search integration
The search feature in the website is implemented using Bizzkit Ecommerce Search. It is a service that handles much of the complexity in integrating with Elasticsearch and creating a good search experience.
You find the backend search integration code in the project Blueprint.Integration.EcommerceSearch
.
The frontend is also integrated directly with the search API. That integration is located under ClientApp\api\product
.
Hangfire jobs
Uploading product data is done from a few Hangfire-jobs located in the Blueprint.Application
project:
- RebuildProductIndexJob
- UpdateProductDocumentsJob
- DeleteProductDocumentsJob
The first one does a full upload of the all products. The second one is used to only update one or more specific products in the index. And the last one is used to delete a product from Ecommerce Search.
The first job is running on a schedule and the other two are triggered from the webhooks integration with the PIM.
Mapping data to the index
You can read about how data is mapped in and out of the index here.
The main classes to know about when changing the mapping are:
ToSearchMapper
and ToDomainMapper
. These are used to map into the index
and out of the index.
Frontend presentation
The customers interact with the search APIs in the product presentation on the website. The text search is used from the search box at the top of the website and the filtering is used from the product list pages. The frontend also uses the search functionality when displaying a product detail page for a single product or the contents of a basket.
Finally, when a CMS page includes product sliders or single product cards, the search API is used in the backend to fetch those products, so they can be displayed in the frontend.