The visual cues and language of search are as familiar to us now as the Google logo itself. Every modern website features an instantaneous navigation and exploration tool. The expectation is for a big search box, usually in the page header, that encourages users to specify a keyword or phrase in return for speedy access to the information they need. On a mobile device, we’re all familiar with the magnifying glass in the top right corner. That’s how Google works and how people are used to looking for what they need. From the front-end, it’s all pretty simple.
However, setting up search or navigation from the back-end presents various options and decisions. There are plenty of modern enterprise search servers, such as Apache Solr or Elasticsearch. They provide features like advanced full-text search capabilities, nice monitoring and administration interfaces. They are highly scalable and feature fault tolerant architectures. They do what they say on the tin and the choice of one over another is not such a big decision.
There is, however, one decision that could really impact later on. Do you want your search engine to live inside your CMS or is an external search server a better option? This decision could impact both cost and scalability substantially. So how do you go about deciding and, if you went for the external option, how would you integrate your search engine with your CMS?
Implementing search inside AEM
For the purpose of this discussion, we’ll use Adobe Experience Manager (AEM) as an example CMS. Lucene, a high performance search engine from Apache, is available inside AEM. So, inside AEM you can implement a simple search solution without any external dependencies, which is a tempting approach for scenarios without sophisticated search rules, a large number of search queries or frequent Lucene index updates.
However, Lucene configuration in AEM is not as powerful as dedicated solutions and doesn’t necessarily provide the interfaces that you may want for monitoring and administration. You’d also experience higher implementation costs and potential maintenance problems compared to a dedicated, out-of-the-box search engine. And there is one more hidden cost, to scale your search feature, you would need more AEM instances.
The alternative is to integrate an external search engine.
The external solution
Implementing a search engine outside of your CMS means that you can scale it independently, upgrade it when needed, with no implications for the CMS, and customise it much more easily. And, of course, by using open-source solutions you can reduce licence costs and use a dedicated search solution simultaneously. There are considerations such as setting up and configuring additional hosts for your search servers and dealing with content synchronization between AEM and the search server, but, by and large, the benefits outweigh these issues.
Sounds good? But how do you connect AEM and the search engine in an efficient and flexible way?
Using Knot.x for search integration
Knot.x is an open source integration tool developed by us at Cognifide. It acts as the glue between your CMS and search engine (or indeed, any other external service) so that you can integrate them both client-side and at the back-end.
In the first instance, AEM would provide search content to the search engine via the Knot.x search integration module extension. The search page would fetch the search results using, for example, AJAX calls, via the same module and the search logic can be closed into one, scalable micro service.
However, if the client-side integration is not an option, Knot.x can be used as a back-end integration feature. The page served by AEM would be a static page - a template - with placeholders for the dynamic data. It won’t cache the entire page, only the template with the placeholders for search results. Then with each search request, the platform would merge the template from the dispatcher with the results from the search engine, and serve a fully dynamic page to the end-user.
In both cases, the pages served by AEM are static, so it is very easy to cache them, shape the page and manage the search content using AEM.
So Knot.x presents a very flexible integration solution. It bridges the gap between AEM and dynamic data sources such as search engines, introducing additional benefits like easier continuous delivery and team cooperation.
What else does Knot.x do?
In fact, Knot.x allows organisations to orchestrate all the moving parts of their customer experience in a controlled and manageable way, with the flexibility to move, add or change any of them without worrying about the knock on effects on other services. It overcomes the problem of presenting a vast array of services in a cohesive experience.
Your customers can now enjoy seamless customer experiences that simultaneously interact with web services, deep back end enterprise systems, and third party providers, without missing a beat. You can do all of this without having to worry about vendors, technologies, programming languages or release cycles.
To learn more, take a look at our Adobe US Summit presentation and demo of the tool in Las Vegas earlier this year. Or, see for yourself how easy it is to integrate AEM with search engines such as Apache Solr, using Knot.x by visiting www.knotx.io.
Tomasz Michalak and Maciej Laskowski