Introducing our Search Utility for Edge Delivery Services

Tags:

September 4, 2024 | Steven Carter
Edge_Web

Adobe Edge Delivery Services is a composable set of services that enables a rapid development environment and highly performant websites. With Edge Delivery Services, authors can update and publish sites and content quickly, and new sites can be launched rapidly. It allows users to leverage content directly from Microsoft Word, Google Docs, or Adobe Universal Editor, and transform the content into website pages without a rebuild process. Sites built in Edge Delivery Services are known for their high Lighthouse Scores and ability to continuously monitor site performance through real user monitoring (RUM).

The Edge Delivery Services platform enables authors to create tabular data in spreadsheets, which developers can then query via JSON requests. Currently, developers can query this data by specifying the sheet, limit, and offset as parameters. The limit and offset parameters will return the data in the order it appears in the sheet. Searching, sorting, and limiting the fields searched and returned are not possible with the service today, requiring developers to return all of the data and do their searching client-side which can result in much larger payloads and hurt performance. In order to address this, Bounteous x Accolite’s Innovation Lab developed the Edge Delivery Services Search Utility (EDS Search Utility), a service that proxies requests to the Edge Delivery Services spreadsheet API, enabling additional capabilities while retaining blazing-fast speeds.

Our EDS Search Utility enables the following capabilities:

  • Search for a given term from every field by default, or from specified fields
  • Search for the term with or without case sensitivity
  • Sort the results before they're returned by the specified field, in ascending or descending order
  • Stipulate only specific fields to be returned, which can enable smaller response payload sizes
  • Retains the ability to specify a particular sheet
  • Request a specific limit and offset for the result set, which is applied after the searching and sorting have occurred

There are many scenarios where the additional functionality from this service is useful, such as:

  • A spreadsheet with many rows, where you’d like to grab a particular row with a unique identifier
  • A spreadsheet with many columns, where you’d only like to retrieve specific fields
  • Returning paginated data with the ability to switch the sort field and direction dynamically
  • Returning just the unique identifier for any rows which contain the search term, for lookups from a different service, such as populating matching products.
  • Implementing a basic site search against the helix-query page index endpoint
  • Find pages that are children of the current path, querying against the helix-query page index endpoint

Adobe1

A screenshot showing the search query builder interface

Adobe2

A screenshot showing the resulting search url and sample results from the selection options

The Bounteous x Accolite Innovation Lab's Edge Delivery Services Utilities service is written in Rust from the ground up to be as performant as possible. In local testing without network overhead, the service was tested to support more than 100,000 requests per second. To achieve these speeds, a two-stage caching setup is utilized. The first caching stage caches the response from the Edge Delivery Services API itself. This cache respects all caching headers set by the endpoint. The second caching stage keeps the parsed data in memory for 30 seconds, so that sheets with a high retrieval rate can deliver responses very quickly. After 30 seconds, a request will pass through to the first caching stage which, as mentioned previously, respects the cache directives set by Edge Delivery Services.

The service provides both a GET request endpoint utilizing query parameters, as well as a GraphQL endpoint. This GraphQL endpoint and documentation can be explored using two different GraphQL interfaces, at the following links: GraphiQL or GraphQL Playground.

Accessing the EDS Search Utility Demo

The Bounteous x Accolite Innovation Lab’s EDS Search Utility provides users with the capability to search across multiple fields, sort results dynamically, and limit the fields returned, addressing many of the limitations developers face when working with large datasets. This added functionality not only improves efficiency but also enhances the user experience by delivering faster, more relevant results.

A demo of this service is available with an API key, which can be requested by filling out a form on our EDS Search Utility post. Once you have an API key, you can either specify that API key for the search builder utility found at the main page, or pass it as a header in direct HTTP requests as 'X-Apikey' when using the tool in your EDS projects. For GraphQL requests, the API key is specified as a parameter to the search endpoint rather than a header. The demo service is not intended for use as a production endpoint, thus it enforces rate limiting linked to your API key.

If you’re interested in deploying this solution for your own uses without requiring an API key or rate limiting, that is possible. Please fill out our Contact Us form and someone from our Innovation Lab will contact you to discuss how you can easily deploy this in your own environment. We look forward to seeing the innovative ways you will leverage this technology to create exceptional digital experiences.