Search API is a powerful module family. Especially, if you work with different search backends such as Solr, Elastic, OpenSearch, etc. and you want to create unified solutions for all of them.
However, it is not easy to build decoupled searches using Search API.
Therefore we have created a new module calledĀ search_api_decoupled, that exposes all necessary configurations to initialise a decoupled search application (layout, facets, search result rendering, autocomplete, etc.) and an API endpoint to query the search index.
The module exposes an UI to control the display of the search block or search page, including placement of elements like search input, pagination, various facets and search summary. For placement theĀ layout module from core is used. Facets are created by the existingĀ facets module. For autocompleteĀ search_api_autocomplete is used.
The search endpoint was designed similar to existing search solutions, foremost Elasticsearch helper, and is very easy to consume.
Architecturally, the search relies only on data from the search index, and does not load nor render entities in Drupal. This makes searching lightning fast and overcomes caching challenges that might occur with existing display solutions for Search API.
For showcasing we have created a search app. However, this search app is not part of the new module, because it is highly opinionated and coupled to our frontend stack (React, Webcomponents, Tailwind). However, we would like to add a demo app or starter kit in a sub-module, that others can use to build their own search apps.