dcaruana

Alfresco OpenSearch

Blog Post created by dcaruana Employee on Feb 14, 2007
Alfresco v2.0 adds support for OpenSearch.



OpenSearch is a specification for sharing search results, extending existing schemas such as ATOM and RSS. Execution of searches is supported via HTTP requests and responses.



OpenSearch comprises of:



  1. Description documents that describe the availability of a search engine


  2. Template Urls that describe how to invoke a search


  3. Paged search results in (extended) ATOM, (extended) RSS and HTML


  4. Auto-discovery of Description documents (i.e. search engines)


Alfresco exposes its own search capabilities via OpenSearch.  This means that any OpenSearch aware client can search an Alfresco Repository to retrieve paged results in either HTML, RSS or ATOM formats.  This includes the Web Browser.  You can use your favourite Web Browser (IE7 or FF2) to search Alfresco.  Auto-discovery of search engines makes it easy to register Alfresco as a Web Browser search engine.



browser.gif



This is cool, but we really wanted to use OpenSearch as a foundation for Alfresco federated search i.e. search many databases with a single query.  And this is what we have done.  The Alfresco Web Client now provides a search aggregator (available in the Sidebar and Dashboard) which submits a single query to one or more databases (Alfresco or non-Alfresco) and presents them in a unified user interface.  Results may be paged through.  The aggregator is OpenSearch aware.  Of course, AJAX techniques are used to provide an interactive experience and minimise transmission costs.



dashboard_query.jpg



Whilst implementing this feature, OpenSearch has also allowed us to dip our toes into REST waters.  Some of the experience gained here may be applied to provide a REST based interface to all Alfresco services in the future.  ATOM, APP, OpenID and Microformats may also play a role.  OpenSearch 'template' URLs are interesting.  They could be applied to any HTTP service, not just search.  A really simple WSDL, if you like.  There are many OpenSearch engines and clients out there now, demonstrating how a simple specification can gain adoption quickly.  It's a shame that most engines currently only provide HTML responses.  This is fine for Web Browsers, but not aggregators.  Perhaps a 'search result' microformat can help.



To summarise, Alfresco is both an OpenSearch server and client.



Search Alfresco with your favourite OpenSearch clients, or search your favourite OpenSearch databases with Alfresco.



http://wiki.alfresco.com/wiki/OpenSearch

Outcomes