Our search solution is based on Elastic App Search, which provides:
The search engine indexes releases, actors, series, and, optionally, tracks.
Log in to the elastic cloud using your credentials. Once logged in you can see the available instances, create new ones, or delete existing instances.
To open the App Search interface, open the relevant instance in the elastic cloud, then open "Enterprise Search".
The flow starts with a client who supplies release data in ONIX or an alternative source format to an ingestion pipeline in deliveryservice.
Deliveryservice places the request on a queue to be processed. Once a deliveryworker is free, the job will be picked up from the queue. How long this takes depends on how much content is being ingested at a given moment. A step in the ingestion pipeline entails ingesting the content into catalogservice. At this point deliveryworker sends an HTTP request to catalogservice with the release data encoded in a JSON payload.
When catalogservice receives the ingestion request, it adds the release along with the relevant actors, series, and tracks to its database. At the same time, the content is passed to App Search. The release becomes searchable as soon as it is made available in the catalog.
App Search provides good search results by default. However, it also provides the necessary tools to achieve even better search results tailored to your service, provided you are willing to put in some effort. Tuning search relevance is a vast topic, so this document will only cover some basic principles.
The first step to improve search results is to do global relevance tuning. Elastic documentation covers this here.
Specifically, it is a good idea to set fields that should not be searchable
(audience_age_from
, shops
, release_id
, etc.) to not be available for text
search (disable entirely, or give a weight 0). Some fields are more important
than others, which should be reflected by the weights. For example, "title"
should probably have a larger weight than "description". Finding suitable
weights can be quite tricky and might require some experimentation. Some
tips are to have a list of search terms you want to optimize for and to make
very small changes to the weights. Go through the search terms multiple
times and try to find weights that give the best results for a majority of the
search terms. Some terms may be difficult to get good results wit, which is
fine. These terms can be handled manually.
App Search provides two ways to manually tune search results: synonyms and curation.