USI (Universal Search Interface) Architecture

Version 1, 26th July 2012.
Index Data ApS

Version 1:

Contents

1. Introduction

This document describes the use of Index Data's Metaproxy software to provide a uniform front-end to searching many different kinds of resources using a consistent query format and obtaining the results in a consistent record format. The combination of software that makes this possible is known as the Universal Search Interface (USI). (The query and record formats are part of the MKC Profile, described elsewhere.)

Using a consistent protocol-compliant front-end, the USI provides access to all kinds of Connectors (Z39.50, APIs, screen scraping), through a single interface.

2. Example

An instance of the USI is running on mkc.indexdata.com for testing and demonstration purposes. Here is a sample request on that USI:

http://mkc.indexdata.com:9000/PLOS_MED?version=1.1&operation=searchRetrieve&query=dinosaur&maximumRecords=3

This searches for records containing the words "dinosaur" in PLoS Medicine, using the SRU web-service protocol. This SRU URL may be accessed in any web browser, and the XML response viewed.

See MKC (MasterKey Connect) Profile for more explanation of this URL and further examples.

3. Architecture

3.1. Components

Uniform access to searchable resources is implemented using a combination of three components: Metaproxy, the Connector Database and the Connector Engine. Client applications communicate directly only with Metaproxy; this consults the Connector Database, and make calls into the Connector Engine and the third-party services to be searched.

System architecture diagram

The roles of the components are as follows:

3.2. Different Kinds of Connector

Although Metaproxy provides a uniform front end to searchable resources, the resources themselves may be of several different types. The most important of these are:

When implementing a Connector for a specific service, we might use a native Z39.50 server, a scraper, or some other kind of gateway. In general, we would choose to implement just one of these -- whichever provides the best results for that service.


Valid XHTML 1.0 Strict Valid CSS! except for the round corners