Search Process

This page is under construction...

Current search process sequence diagram

Download printer-friendly version

Category/database discovery sequence diagram

Download printer-friendly version

Once the Consumer has access to the Repository, getAssetsByType would be called with a new Type defined for subject categories. Assets of this type would contain a displayName, a description and other Assets. The Assets contained in a subject category could be other subject categories (i.e. sub-categories: Engineering > Computer Engineering). Assets contained in a subject category could also be searchable databases (i.e. Engineering > Computer Engineering > IEEE Explore). Searchable databases would be another new Type of Asset that we introduce consisting of a displayName, description and id (the id used for this database within the metasearch engine).

The Consumer can store or display this hierarchical list of subject categories and searchable databases using Asset's getAssetsByType method and iterating through the returned AssetIterator recursively over all Assets with the subject category type.

Asynchronous status & database browsing sequence diagram

Download printer-friendly version

Initiating a search would basically work in the same way that it currently does now with the following changes:

  • the searchProperties OBA for getAssetsBySearch would include a list of databases to be searched
  • once the Metsearch AssetIterator is returned, the Consumer would not continue to try and fetch the first batch of results. Instead, the Consumer would continue to check on the status of the search until "Top Results" (the results of metasearching and merging) were ready. Once ready, the Metasearch AssetIterator could be used to fetch Assets. If the Metasearch AssetIterator were used to fetch Assets before "Top Results" were ready, the Consumer would get the "wait longer" exception.

As the status is updated and individual database results become available, the Consumer can browse the results from an individual database by using the Asset that represents that database. The Consumer has access to all searchable database Assets through the category/database retrieval process (see green sequence diagram above). The Assets contained in a searchable database Asset are the records retrieved from the metasearch engine for that particular database. The Consumer would use getAssets to get an AssetIterator to iterate over these records.