There is a clear desire on the part of large enterprises to provide seamless searching and discovery of information, content and documents in multiple vendorsï¿½ repositories. One of the principal drivers of this is discovery of content that is in breach of any compliance policies. They are also interested in the discovery and exchange of knowledge between different divisions. A simple Google style of appliance has not been sufficient for most of these organizations since they want to use metadata and process information as part of the search process. A Java-only interface such as JCR is not really sufficient since it needs to apply to non-Java stores and Microsoft SharePoint. There also needs to be a way to identify the scope of the search through a consistent naming and discovery mechanism.
The pattern of cross repository searches is to present the search as portlet or web application. The user should either be able to express a simple Google-like query or be provided with a web interface for specifying a more meta-data or classification oriented search. The scope of the query should be more than one repository or JCR Workspace and should be able include multiple repositories and sub-repositories. The results should be blocked (i.e. 1-10, 11-20, etc.) and returned instantaneously. Sorting options should be supplied. The language that implements this pattern should be understandable and constructible by a SQL-literate programmer.
Some of the applications of cross repository searching are discovery of knowledge in various departmental repositories, compliance discovery of infractions and identification of knowledgeable individuals based upon the material they have contributed to various repositories. Some of these applications may be automated, but most will probably be interactive. It may be enough to return the results, but it is worth considering adding a follow-up action (a pattern in itself?) that either creates a new object in a central repository or invokes a workflow to perform a follow up action, such as send out a compliance notice.
Functionality required beyond baseline:
UDDI discovery of available repositories
A universal repository identifier
Repository or workspace reference for a query
Multiple credential handling
Context of search for follow-up action
User ï¿½ searching for content among many different repositories